1# Categories
2
3Root declarations require one non-empty `@category`. Reuse nearby categories;
4prefer lowercase plurals and gerunds while preserving canonical domain casing.
5
6Common categories include:
7
8- Shapes: `constructors`, `destructors`, `models`, `schemas`, `guards`,
9 `predicates`, `getters`, `accessors`, `instances`, `constants`, `protocols`,
10 `prototypes`, `re-exports`, `unsafe`, `testing`.
11- Effect: `services`, `tags`, `layers`, `context`, `resource management`,
12 `running`, `errors`, `error handling`.
13- Operations: `combinators`, `filtering`, `mapping`, `sequencing`, `zipping`,
14 `combining`, `merging`, `converting`, `transforming`, `folding`, `splitting`,
15 `repetition`.
16- Shared: `utility types`, `encoding`, `decoding`, `serialization`, `tracing`,
17 `metrics`, `logging`, `annotations`, `references`, `symbols`, `type IDs`,
18 `configuration`, `math`, `comparisons`, `ordering`.
19
20Keep these boundaries: services are contracts, tags identify services, and
21layers provide them; getters retrieve values while accessors read context;
22errors model failures while error handling recovers or maps them; models are
23domain data while utility types are type-level contracts; guards narrow while
24predicates return booleans.