From novadb-consulting
Create a new attribute definition (typeRef=10) in NovaDB.
How this skill is triggered — by the user, by Claude, or both
Slash command
/novadb-consulting:create-attributeThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
**This skill ONLY handles:** Creating new attribute definitions (typeRef=10).
This skill ONLY handles: Creating new attribute definitions (typeRef=10).
Do NOT use this skill for:
get-attributeupdate-attributedelete-attributesearch-attributesCreate an attribute definition (typeRef=10) in NovaDB. Supports all data types, multi-value, ObjRef constraints, language-dependence, and optional JS validation.
Note: NovaDB object IDs start at 2²¹ (2,097,152). All IDs in examples below are samples — always use real IDs from your system.
novadb_cms_create_objects — Create the attribute definitionnovadb_cms_get_object — Fetch the created attribute to return full dataCall novadb_cms_create_objects with:
branch — Numeric branch ID (int32). Always use the branch the user is currently working on.objects — Array with one object: { meta: { typeRef: 10 }, values: [...] }comment / username — (optional) Audit trailOnly include values for fields that are explicitly needed. Name (EN) and data type are always required. Apply the principle of minimal configuration — do not set properties unless the user requests them or the business case clearly requires them.
apiIdentifier (meta field): Only set when explicitly requested. Must be unique across all branches and attributes.true when the attribute genuinely holds translatable content."None". Only set when explicitly requested.false. Verify case-by-case before enabling.| Field | Attr ID | Type | Language | Notes |
|---|---|---|---|---|
| Name (EN) | 1000 | String | 201 | Required |
| Name (DE) | 1000 | String | 202 | |
| Description (EN) | 1012 | TextRef | 201 | |
| Description (DE) | 1012 | TextRef | 202 | |
| Data type | 1001 | String.DataType | 0 | Required — see enum below |
| Language dependent | 1017 | Boolean | 0 | Only set when appropriate |
| Required | 1018 | Boolean | 0 | |
| Allow multiple | 1004 | Boolean | 0 | |
| Predefined values | 1006 | Boolean | 0 | |
| Unique values | 1032 | Boolean | 0 | |
| Allowed types | 1015 | ObjRef | 0 | For ObjRef data type — one entry per type ID with sortReverse |
| Inheritance behavior | 1013 | String | 0 | "None" / "Inheriting" / "InheritingAll" |
| Virtual | 1020 | Boolean | 0 | |
| Parent group | 1019 | ObjRef | 0 | |
| Sortable values | 1005 | Boolean | 0 | |
| Format string | 1007 | String | 0 | e.g. "dd.MM.yyyy" |
| Search filter | 1010 | Boolean | 0 | |
| List view column | 1011 | Boolean | 0 | |
| Variant axis | 1002 | ObjRef | 0 | |
| Unit of measure | 1003 | ObjRef | 0 | Ref type 30 |
| Reverse relation name (EN) | 1051 | String | 201 | |
| Reverse relation name (DE) | 1051 | String | 202 | |
| Sortable child objects | 1023 | Boolean | 0 | |
| Disable spell checking | 1028 | Boolean | 0 | |
| Validation code | 1008 | TextRef.JS | 0 | JS: receives value global, return string to reject |
| Virtualization code | 1009 | TextRef.JS | 0 | Requires isVirtual: true |
Valid values for attribute 1001:
String, TextRef, TextRef.JavaScript, TextRef.CSS,
XmlRef.SimpleHtml, XmlRef.VisualDocument,
Integer, Decimal, Float, Boolean,
DateTime, DateTime.Date,
ObjRef, BinRef, BinRef.Icon, BinRef.Thumbnail,
String.DataType, String.InheritanceBehavior, String.UserName, String.RGBColor
{
"branch": "<branchId>",
"objects": [
{
"meta": { "typeRef": 10 },
"values": [
{ "attribute": 1000, "language": 201, "variant": 0, "value": "Industry" },
{ "attribute": 1000, "language": 202, "variant": 0, "value": "Branche" },
{ "attribute": 1001, "language": 0, "variant": 0, "value": "String" }
]
}
],
"comment": "Created via AI assistant"
}
For an ObjRef attribute that references specific types, use separate entries with sortReverse:
{
"values": [
{ "attribute": 1001, "language": 0, "variant": 0, "value": "ObjRef" },
{ "attribute": 1015, "language": 0, "variant": 0, "value": 12345, "sortReverse": 0 },
{ "attribute": 1015, "language": 0, "variant": 0, "value": 67890, "sortReverse": 1 }
]
}
The POST response returns { transaction, createdObjectIds: [id] }. Use the first ID to fetch the full object:
{
"branch": "<branchId>",
"objectId": "<createdObjectIds[0]>",
"inherited": true
}
Return the fetched CmsObject to the user.
Every value entry follows: { attribute, language, variant, value, sortReverse? }
language: 201=EN, 202=DE, 0=language-independentvariant: 0=defaultsortReverse: for multi-value ordering (0, 1, 2, ...)Never arrays. Separate entries with sortReverse:
{ attr: 1015, value: id1, sortReverse: 0 }, { attr: 1015, value: id2, sortReverse: 1 }{ attr: 1015, value: [id1, id2] }Returns { transaction, createdObjectIds: [id] }. Use the ID to fetch the full object.
npx claudepluginhub novadb/claude-plugins --plugin novadb-consultingSearches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.