1// Schema lifecycle: experimental | stable | deprecated
2@status("experimental")
3package gemara
4
5@go(gemara)
6
7// CapabilityCatalog describes a collection of system capabilities
8#CapabilityCatalog: {
9 #Catalog
10 metadata: type: "CapabilityCatalog"
11
12 // capabilities is a list of capabilities defined by this catalog
13 capabilities?: [#Capability, ...#Capability] @go(Capabilities)
14
15 if capabilities != _|_ {
16 _uniqueCapabilityIds: {for i, c in capabilities {(c.id): i}}
17 groups: [#Group, ...#Group]
18 }
19}
20
21// Capability describes a system capability such as a feature, component or object.
22#Capability: {
23 // id allows this entry to be referenced by other elements
24 id: string
25
26 // title describes this capability at a glance
27 title: string
28
29 // description provides a detailed overview of this capability
30 description: string
31
32 // group references by id a catalog group that this capability belongs to
33 group: string @go(Group)
34}