{% rule %}
Attributes
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | ✓ | Unique kebab-case id within the parent document (e.g., 'no-direct-db') |
force | enum | ✓ | must | should — constraint strength |
ref | string | — | Qualified ref to the motivating spec item (e.g., 'manifest/product#response-time') |
realm | enum | — | global | spec | impl — scope of the rule. global = applies everywhere, spec = authoring conventions, impl = code/architecture constraints. Defaults to global. |
tags | string | — | Space-separated labels for filtering and discovery (e.g., 'convention naming') |
Valid Parent Contexts
This tag is valid inside: {% manifest %}, {% domain %}, {% blueprint %}, {% model %}, {% tag %}
Rules
| Rule | Force | Realm | Reference | Description |
|---|---|---|---|---|
no-direct-db | | | manifest/product#response-time | No component above the repository layer may access the database directly. |
service-suffix | | | — | Service classes must be named with a `Service` suffix (e.g., `BookmarkService`). |
prefer-value-objects | | | — | Domain primitives (IDs, amounts, statuses) should be wrapped in value objects, not passed as raw strings. |
Declares a named convention, invariant, or implementation constraint. Prose body states the rule. ref traces it back to a motivating requirement or principle when one exists. tags enable cross-document filtering and discovery.
Architecture rule in a blueprint, citing a manifest requirement
{% rule id="no-direct-db" force="must" ref="manifest/product#response-time" tags="architecture layering" %}No component above the repository layer may access the database directly.{% /rule %} Naming convention in a domain, no ref
{% rule id="service-suffix" force="must" tags="convention naming" %}Service classes must be named with a `Service` suffix (e.g., `BookmarkService`).{% /rule %} System invariant in a manifest
{% rule id="prefer-value-objects" force="should" tags="domain-model convention" %}Domain primitives (IDs, amounts, statuses) should be wrapped in value objects, not passed as raw strings.{% /rule %}