Category
A classification axis with a closed set of allowed values — priority levels, bug severity tiers, product areas. Use Category when the valid values are defined and enforced; use freeform labels for open-ended tagging.
| ID prefix | CAT |
| State machine | none |
| MCP server | none |
| Skill | category-management (Layer 2) |
Fields
Required
| Field | Type | Description |
|---|---|---|
name | string (1–100) | Category name (kebab-case) |
description | string | What this axis classifies |
axis | string | Label key used on entities (e.g. priority, severity) |
values | object[] | Allowed values — each with name (required), description, deprecated, children (optional) |
Optional
| Field | Type | Description |
|---|---|---|
applies_to | string[] | Primitive kinds this applies to; empty = applies anywhere |
default | string | Default value when unspecified |
multi | boolean | true = entity can carry multiple values (default: false) |
Example
---
apiVersion: processkit.projectious.work/v1
kind: Category
metadata:
id: CAT-20260411_0917-BrightFern-workitem-priority
created: '2026-04-11T09:17:00Z'
spec:
name: workitem-priority
description: Business priority for work items.
axis: priority
applies_to: [WorkItem]
default: medium
values:
- name: critical
description: Blocks a release or customer. Drop everything.
- name: high
description: Important this sprint. Do before medium items.
- name: medium
description: Normal priority. Default.
- name: low
description: Nice to have. Defer if sprint is full.
---
Notes
- Categories complement the
typeandpriorityfields already on WorkItem — use Category when you need a custom classification axis beyond the built-in enums. deprecated: trueon a value signals it should no longer be used on new entities, but keeps old entities valid.- Hierarchical value sets use the
childrenfield to model tree-shaped taxonomies (e.g. product area → sub-area).