Skip to content

Tag Taxonomy

The taxonomy defines the vocabulary for pattern annotations: what tags exist, their valid values, and how they’re parsed. It’s 100% TypeScript-defined in src/taxonomy/, providing type safety and IDE autocomplete.


A taxonomy is a classification system. In @libar-dev/delivery-process, the taxonomy defines:

ComponentPurpose
CategoriesDomain classifications (e.g., core, api)
StatusFSM states (roadmap, active, completed, deferred)
Format TypesHow tag values are parsed (flag, csv, enum)
HierarchyWork item levels (epic, phase, task)

The taxonomy is NOT a fixed schema. Presets (libar-generic, generic, ddd-es-cqrs) select different subsets, and you can define custom categories.


src/taxonomy/
├── index.ts # Barrel exports
├── registry-builder.ts # buildRegistry() — creates TagRegistry
├── categories.ts # Category definitions (core, api, ddd, …)
├── status-values.ts # FSM state values: roadmap/active/completed/deferred
├── deliverable-status.ts # Deliverable statuses: complete/in-progress/pending/deferred/superseded/n-a
├── normalized-status.ts # Display normalization (3 buckets)
├── format-types.ts # Tag value parsing rules
├── hierarchy-levels.ts # epic/phase/task
├── risk-levels.ts # low/medium/high
├── severity-types.ts # error/warning/info
├── layer-types.ts # timeline/domain/integration/e2e/component/unknown
├── generator-options.ts # Format, groupBy, sortBy, workflow, priority, ADR enums
└── conventions.ts # Convention values for reference document generation

The buildRegistry() function creates a TagRegistry containing all taxonomy definitions:

import { buildRegistry } from '@libar-dev/delivery-process/taxonomy';
const registry = buildRegistry();
// registry.tagPrefix → "@libar-docs-"
// registry.fileOptInTag → "@libar-docs"
// registry.categories → CategoryDefinition[]
// registry.metadataTags → MetadataTagDefinition[]
// registry.aggregationTags → AggregationTagDefinition[]
// registry.formatOptions → string[]
PresetCategoriesTag PrefixUse Case
libar-generic (default)3@libar-docs-Simple projects (this package)
ddd-es-cqrs21@libar-docs-DDD/Event Sourcing architectures
generic3@docs-Simple projects with @docs- prefix

The preset determines which categories are available. All presets share the same status values and format types.


Tags have different value formats:

FormatExampleParsing
flag@docs-coreBoolean presence (no value)
value@docs-pattern MyPatternSimple string
enum@docs-status completedConstrained to predefined list
csv@docs-uses A, B, CComma-separated values
number@docs-phase 15Numeric value
quoted-value@docs-brief:'Multi word'Preserves spaces

Generate a human-readable taxonomy reference from the TypeScript taxonomy source:

Terminal window
# Via the docs generator (recommended)
npx generate-docs -g taxonomy -i "src/**/*.ts" -o docs -f
# Flat single-file reference (deprecated — use generate-docs instead)
npx generate-tag-taxonomy -o TAG_TAXONOMY.md -f

The generated output reflects every tag the system supports — including all 21 categories available with the ddd-es-cqrs preset.


TopicDocument
Presets & configCONFIGURATION.md
Custom categoriesCONFIGURATION.md