$npx -y skills add michtio/craftcms-claude-skills --skill craft-content-modelingCraft CMS 5 content modeling — sections, entry types, fields, Matrix, relations, project config, and content architecture strategy. Covers choosing section types, designing entry types and field layouts, selecting field types, configuring Matrix and nested entries, relations and
| 1 | # Craft CMS 5 — Content Modeling |
| 2 | |
| 3 | How to structure content in Craft CMS 5. Sections, entry types, fields, Matrix, |
| 4 | relations, asset management, and strategic patterns for real projects. |
| 5 | |
| 6 | This skill covers **content architecture** — what goes in the CP, how it's |
| 7 | organized, and how templates access it. For extending Craft with PHP |
| 8 | (plugins, modules, custom element types), see the `craftcms` skill. |
| 9 | |
| 10 | ## Companion Skills — Always Load Together |
| 11 | |
| 12 | When this skill triggers, also load: |
| 13 | |
| 14 | - **`craft-site`** — Template architecture, component patterns, routing. Required when content decisions affect how templates render data. |
| 15 | - **`craft-twig-guidelines`** — Twig coding standards. Required when writing any Twig examples or template code alongside content modeling. |
| 16 | - **`ddev`** — All commands run through DDEV. Required for running project config commands, Craft CLI, and content migrations. |
| 17 | |
| 18 | ## Documentation |
| 19 | |
| 20 | - Entries: https://craftcms.com/docs/5.x/reference/element-types/entries.html |
| 21 | - Sections: https://craftcms.com/docs/5.x/reference/element-types/entries.html#sections |
| 22 | - Fields: https://craftcms.com/docs/5.x/system/fields.html |
| 23 | - Field types: https://craftcms.com/docs/5.x/reference/field-types/ |
| 24 | - Matrix: https://craftcms.com/docs/5.x/reference/field-types/matrix.html |
| 25 | - Relations: https://craftcms.com/docs/5.x/system/relations.html |
| 26 | - Eager loading: https://craftcms.com/docs/5.x/development/eager-loading.html |
| 27 | - Project config: https://craftcms.com/docs/5.x/system/project-config.html |
| 28 | |
| 29 | Use `WebFetch` on specific doc pages when a reference file doesn't cover enough detail. |
| 30 | |
| 31 | ## The Craft 5 Mental Model |
| 32 | |
| 33 | **Everything is becoming an entry.** Entry types are global (shared across sections and |
| 34 | Matrix fields). Fields come from a global pool. This is the "entrification" of Craft — categories, tags, and globals are being unified into entries over a three-version arc: |
| 35 | |
| 36 | - **Craft 4.4** — `entrify` CLI commands added to convert categories, tags, and globals to entries |
| 37 | - **Craft 5** — Categories, tags, and global sets are deprecated and discouraged for new projects. New category groups, tag groups, and global sets can still be created in the CP (the "New" buttons remain, gated by `allowAdminChanges`), and existing ones continue to work. A unified "Content" section replaces the fragmented entries view. Custom entry index pages (5.9.0) solve the sidebar organization concern. |
| 38 | - **Craft 6** — Categories, tags, and global sets will be removed entirely |
| 39 | |
| 40 | For **new projects**, always use entries: Structure sections for hierarchical taxonomy, Channel sections for flat taxonomy, Singles for site-wide settings. For **existing projects**, migrate at your own pace using the `entrify` commands. |
| 41 | |
| 42 | Three decisions define your content architecture: |
| 43 | |
| 44 | 1. **Which section type** organizes the content (Single, Channel, Structure) |
| 45 | 2. **Which entry types** define its shape (global, reusable across contexts) |
| 46 | 3. **Which relation strategy** connects content together (Entries fields, Matrix, CKEditor nested entries, or a combination) |
| 47 | |
| 48 | ## CMS Editions |
| 49 | |
| 50 | Craft CMS has four editions (Solo, Team, Pro, Enterprise) that affect content modeling. The key distinction: if any section needs multiple custom user groups with per-group edit/view restrictions, you need **Pro or Enterprise** (multiple custom user groups are Pro+ only). Team includes one fixed "Team" group whose permissions are customizable for non-admins, plus a 5- |