Skip to content
{% rule %}
AutoXXS (320px)XS (375px)SM (640px)MD (768px)LG (1024px)XL (1280px)XXL (1536px)
SketchMaterialiOSTamagui
DataInjectionKeyPatternsServiceTransactionProcessResearchProductQualityPerformanceSpecDomainFunctionTechnologyArchitectureConfigMiddlewareDataDatabaseDrizzleMigrationModelop-sqliteSchemaSQLState ManagementDraftKeystoneMergePatchPatchesPersistenceReactiveRedoStoreUndoTestingDeviceFactoryIsolationTypeScriptZodTopicsCommunicationBidsNVCDesignDesign ImplicationsEducationPedagogyFoundationsPsychologyAttachmentFloodingRelatingAuthentic RelatingUIEditorReact Native

{% 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 must global manifest/product#response-time No component above the repository layer may access the database directly.
architecturelayering
service-suffix must global Service classes must be named with a `Service` suffix (e.g., `BookmarkService`).
conventionnaming
prefer-value-objects should global Domain primitives (IDs, amounts, statuses) should be wrapped in value objects, not passed as raw strings.
domain-modelconvention

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
tagruleblueprint rule-tag-blueprint
{% 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
tagruledomainconvention rule-tag-domain
{% 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
tagrulemanifest rule-tag-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 %}