agentsclimarketplace

Content modelling

Skill viktorbezdek/skillstack/content-modelling/skills/content-modelling

Skills I use and develop to deliver better outcomes faster and with less effort.

Install
npx -y skills add viktorbezdek/skillstack --skill content-modelling

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 10 stars10 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Design CMS content models — content types, fields, editorial workflows, governance rules, and COPE (Create Once, Publish Everywhere) patterns — for structured, multi-channel publishing. Use when the user asks to design a content model, define content types in a CMS, structure fields for editorial content, plan a headless CMS architecture, or design content reuse across channels. NOT for formal knowledge graphs, OWL/RDF ontologies, or semantic modeling (use ontology-design). NOT for naming conventions or taxonomy standards across code (use consistency-standards).

SKILL.md

6.3 KB, as published. Nobody here has run it

Content Modelling

Design structured content models for reusable, multi-channel content.

When to Use / Not Use

Use when:

  • Designing a CMS schema for a new project
  • Defining content types with fields, constraints, and relationships
  • Planning editorial workflows (draft, review, publish, archive)
  • Building multi-channel content systems (web, mobile, email, API)
  • Migrating from page-based to structured content models
  • Establishing naming conventions for content types and fields

Do NOT use when:

  • Building formal ontologies with classes, properties, and inference rules -> use ontology-design
  • Standardizing naming conventions across code and documentation -> use consistency-standards
  • Designing API schemas and endpoints -> use api-design

Decision Tree

What are you modeling?
├── CMS content types (what fields, what relationships)
│   ├── New system? -> Start with content inventory, then type design (§Field Types, §Relationship Types)
│   └── Existing system with problems? -> Audit for anti-patterns first (§Anti-Patterns)
├── Multi-channel publishing (same content, different outputs)
│   └── Need COPE? -> Use semantic fields, not layout fields (§Design Principles)
├── Editorial workflow (who reviews, when, how)
│   └── Need lifecycle model? -> Define status enum + transition rules (§Content Model Template)
├── Terminology standardization (what to call things)
│   └── Naming conventions only? -> Use `consistency-standards` instead
└── Formal knowledge model with reasoning?
    └── Use `ontology-design` instead

Core Concepts

ConceptDefinition
Content TypeTemplate defining structure for similar content
FieldSingle data element within a content type
RelationshipConnection between content types
InstanceSpecific piece of content based on a type

Field Types

TypeUse CaseExample
Short textTitles, labels"Getting Started"
Long textDescriptionsParagraph content
Rich textFormatted contentBold, links, lists
NumberQuantities42
BooleanTogglestrue
DateTimestamps2024-01-15
MediaImages, fileshero.png
ReferenceLinks to other content→ Author
EnumFixed choices`draft

Relationship Types

Reference (Linked)

Content exists independently, linked by ID.

Article → Author (reference)
         └─ Author can be edited separately

Embedded

Content nested within parent.

Article ⊃ SEO Metadata (embedded)
          └─ Metadata only exists in this article

Hierarchical

Parent-child relationships.

Documentation
├── Getting Started
│   ├── Installation
│   └── Configuration
└── API Reference

Relationship Decision Guide

QuestionIf YesIf No
Does the related content exist independently?Use ReferenceUse Embedded
Will it be edited in one place and propagate?Use ReferenceUse Embedded
Is it a tree structure?Use Hierarchical

Content Model Template

## Content Type: [Name]

### Overview
| Attribute | Value |
|-----------|-------|
| **Purpose** | [what this type represents] |
| **Cardinality** | [expected instance count] |
| **Lifecycle** | [draft → review → published] |

### Fields
| Field | Type | Required | Constraints |
|-------|------|----------|-------------|
| title | Short text | Yes | Max 100 chars |
| slug | Short text | Yes | URL-safe, unique |
| body | Rich text | Yes | - |
| author | Reference | Yes | → Author |
| status | Enum | Yes | draft/published |

### Relationships
| Relation | Type | Target | Cardinality |
|----------|------|--------|-------------|
| author | Reference | Author | 1:1 |
| category | Reference | Category | Many:1 |

### Validation Rules
- `slug` must be unique within parent
- `publishedAt` required when `status = published`

Naming Conventions

ElementConventionExample
TypesPascalCaseBlogPost
FieldscamelCasepublishedAt
Slugskebab-casegetting-started

Design Principles

COPE: Create Once, Publish Everywhere

  • Separate content from presentation
  • Use semantic fields, not layout fields
  • Enable multi-channel delivery

Atomic Content

  • Break content into smallest reusable units
  • Compose complex content from atoms
  • Avoid duplication

Anti-Patterns

Anti-PatternProblemSolution
Page-based modelsContent tied to specific layouts; cannot reuse across channelsRedesign with semantic fields; remove all layout-specific fields (heroImage position, sidebar width) from content types
HTML in rich text fieldsContent renders incorrectly on mobile or in email; mixes content with presentationEnforce rich text fields as semantic markup only; strip layout HTML in migration; use structured blocks
Monolithic content typeOne "General Content" type with 40 optional fields; authors confused about which to fillDecompose into specific types based on field usage analysis; each type gets only its relevant fields
Redundant fieldsSame data in multiple places; drift on updatesSingle-source via references or variables; if data changes, update once
Missing lifecycleContent jumps from draft to published with no review; stale content never archivedAdd status enum with transition rules and required review steps
Presentation in modelheroImage on a Guide type that not all channels renderMove to separate MediaAsset reference; rendering layer decides what to show

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.