# social.craftsky.project.defs

> Published by [craftsky.social](https://lexicon.garden/identity/did:plc:lmmx63zcns6gewgxqfdt4kof)

✓ This is the authoritative definition for this NSID.

## Description

Shared objects and tokens for craft project metadata. These are used by social.craftsky.feed.post and multiple social.craftsky.project.* detail lexicons.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:lmmx63zcns6gewgxqfdt4kof/social.craftsky.project.defs)
- [Documentation](https://lexicon.garden/lexicon/did:plc:lmmx63zcns6gewgxqfdt4kof/social.craftsky.project.defs/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:lmmx63zcns6gewgxqfdt4kof/social.craftsky.project.defs/examples)

## Definitions

### `social.craftsky.project.defs#abstract`

**Type**: `token`

Abstract or non-representational design.

Abstract or non-representational design.

### `social.craftsky.project.defs#accessory`

**Type**: `token`

Worn or carried accessories.

Worn or carried accessories.

### `social.craftsky.project.defs#alteration`

**Type**: `token`

Mending, repair, refashioning, or adjustment of an existing item.

Mending, repair, refashioning, or adjustment of an existing item.

### `social.craftsky.project.defs#animal`

**Type**: `token`

Animal-themed design or motif.

Animal-themed design or motif.

### `social.craftsky.project.defs#aran`

**Type**: `token`

Aran weight yarn.

Aran weight yarn.

### `social.craftsky.project.defs#boho`

**Type**: `token`

Boho or bohemian-inspired design.

Boho or bohemian-inspired design.

### `social.craftsky.project.defs#botanical`

**Type**: `token`

Botanical, leaf, plant, or garden-inspired design.

Botanical, leaf, plant, or garden-inspired design.

### `social.craftsky.project.defs#bulky`

**Type**: `token`

Bulky weight yarn.

Bulky weight yarn.

### `social.craftsky.project.defs#checkerboard`

**Type**: `token`

Checkerboard or checked design.

Checkerboard or checked design.

### `social.craftsky.project.defs#colorblock`

**Type**: `token`

Color-blocked design.

Color-blocked design.

### `social.craftsky.project.defs#component`

**Type**: `token`

Motifs, swatches, parts, trims, blocks, appliques, or other components.

Motifs, swatches, parts, trims, blocks, appliques, or other components.

### `social.craftsky.project.defs#costume`

**Type**: `token`

Costume, cosplay, theatre, or fancy-dress projects.

Costume, cosplay, theatre, or fancy-dress projects.

### `social.craftsky.project.defs#cottagecore`

**Type**: `token`

Cottagecore design or aesthetic.

Cottagecore design or aesthetic.

### `social.craftsky.project.defs#dk`

**Type**: `token`

DK weight yarn.

DK weight yarn.

### `social.craftsky.project.defs#fingering`

**Type**: `token`

Fingering weight yarn.

Fingering weight yarn.

### `social.craftsky.project.defs#floral`

**Type**: `token`

Floral design, motif, or aesthetic.

Floral design, motif, or aesthetic.

### `social.craftsky.project.defs#folk`

**Type**: `token`

Folk-inspired design or aesthetic.

Folk-inspired design or aesthetic.

### `social.craftsky.project.defs#garment`

**Type**: `token`

Clothing worn on the body.

Clothing worn on the body.

### `social.craftsky.project.defs#gauge`

**Type**: `object`

Structured stitch gauge measured over a stated distance. Rows are optional because many crafters record only stitch gauge.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `measurement` | `integer` | Yes | Measurement distance for the gauge swatch, interpreted with unit. |
| `rows` | `integer` | No | Number of rows or rounds measured, when recorded. |
| `stitches` | `integer` | Yes | Number of stitches measured across the gauge swatch. |
| `unit` | `string` | Yes | Measurement unit for the gauge swatch. |

### `social.craftsky.project.defs#geometric`

**Type**: `token`

Geometric design, motif, or layout.

Geometric design, motif, or layout.

### `social.craftsky.project.defs#gothic`

**Type**: `token`

Gothic design or aesthetic.

Gothic design or aesthetic.

### `social.craftsky.project.defs#holiday`

**Type**: `token`

Holiday-themed design.

Holiday-themed design.

### `social.craftsky.project.defs#homeGoods`

**Type**: `token`

Household items and decor.

Household items and decor.

### `social.craftsky.project.defs#lace`

**Type**: `token`

Lace weight yarn.

Lace weight yarn.

### `social.craftsky.project.defs#lettering`

**Type**: `token`

Design featuring lettering, words, initials, or typography.

Design featuring lettering, words, initials, or typography.

### `social.craftsky.project.defs#material`

**Type**: `object`

One visible material entry for a project. Rich-text annotations are scoped to text.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `facets` | `array` | No | Byte-range annotations over text for material mentions and hashtags. |
| `text` | `string` | Yes | Visible material text, e.g. '3m of @sewmesunshine.bsky.social #viscose fabric'. |

### `social.craftsky.project.defs#maximalist`

**Type**: `token`

Maximalist design or aesthetic.

Maximalist design or aesthetic.

### `social.craftsky.project.defs#medical`

**Type**: `token`

Medical, adaptive, support, or care-related projects.

Medical, adaptive, support, or care-related projects.

### `social.craftsky.project.defs#minimalist`

**Type**: `token`

Minimalist design or aesthetic.

Minimalist design or aesthetic.

### `social.craftsky.project.defs#modern`

**Type**: `token`

Modern design or aesthetic.

Modern design or aesthetic.

### `social.craftsky.project.defs#nautical`

**Type**: `token`

Nautical or maritime-inspired design.

Nautical or maritime-inspired design.

### `social.craftsky.project.defs#novelty`

**Type**: `token`

Novelty or playful themed design.

Novelty or playful themed design.

### `social.craftsky.project.defs#other`

**Type**: `token`

Intentionally uncategorized or not covered by the current vocabulary.

Intentionally uncategorized or not covered by the current vocabulary.

### `social.craftsky.project.defs#pattern`

**Type**: `object`

Optional metadata for the pattern used. Every field is optional. Self-drafted patterns may still carry a name, difficulty, URL, designer, or publisher.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `designer` | `string` | No | The person or people who designed the pattern. Free text so physical patterns, indie designers, and multiple-designer credits can be represented without account references. Rich-text annotations for this string live in designerFacets. |
| `designerFacets` | `array` | No | Byte-range annotations over 'designer'. Mention facets may notify credited Craftsky accounts. |
| `difficulty` | `string` | No | Pattern difficulty. A property of the pattern, not the post. Self-drafted patterns may include the author's own rating. knownValues are tokens. |
| `name` | `string` | No | Pattern name or visible pattern hashtag, e.g. 'Simplicity 8265', 'Hitchhiker Shawl', or '#hitchhiker'. Useful when there is no URL (e.g. a physical pattern), or alongside a URL as a display label. Rich-text annotations for this string live in nameFacets. |
| `nameFacets` | `array` | No | Byte-range annotations over 'name'. Used for pattern hashtags and future links/mentions in the visible pattern name string. |
| `publisher` | `string` | No | The person, company, or entity that published the pattern. Optional and free text because pattern publishing differs across crafts and eras. Rich-text annotations for this string live in publisherFacets. |
| `publisherFacets` | `array` | No | Byte-range annotations over 'publisher'. Mention facets may notify credited Craftsky accounts. |
| `selfDrafted` | `boolean` | No | True when the author identifies the pattern as self-drafted. Omit when false. This may coexist with other pattern metadata. |
| `url` | `string` (uri) | No | Link to the pattern. |

### `social.craftsky.project.defs#pet`

**Type**: `token`

Pet clothing, bedding, toys, and accessories.

Pet clothing, bedding, toys, and accessories.

### `social.craftsky.project.defs#plaid`

**Type**: `token`

Plaid or tartan-inspired design.

Plaid or tartan-inspired design.

### `social.craftsky.project.defs#project`

**Type**: `object`

Wraps a craft project's shared fields (#projectCommon) and optional craft-specific fields (#details, open union). The wrapper exists so shared fields live in one place (common) while per-craft specialisations are added additively via the union. See ADR 001.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `common` | `ref` → `#projectCommon` | Yes | Shared project fields that apply across all crafts. |
| `details` | `union` | No | Optional craft-specific fields. Open union — new crafts add new variants here without breaking existing records. |

### `social.craftsky.project.defs#projectCommon`

**Type**: `object`

Project fields shared across every craft. A post with project.common present but no project.details is a valid craft-tagged project post without specialised fields — useful when craftType references a craft that has no #details lexicon yet.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `colors` | `array` | No | Primary colors used in the project, normalized by clients for search and filtering. knownValues are open suggestions; clients may write other bounded color strings when needed. |
| `craftType` | `string` | Yes | The craft this project belongs to. Required — a project post without a craft type is meaningless. knownValues are tokens; new crafts can be added to feed.defs without breaking old clients. |
| `designTags` | `array` | No | Visual design, motif, or aesthetic tags for the project, normalized by clients for cross-craft search and filtering. knownValues are open suggestions; clients may write other bounded design strings when needed. |
| `duration` | `string` | No | Free-text description of how long the project took, e.g. '3 weeks', 'a weekend', '6 months of evenings'. Deliberately unstructured — crafters describe duration informally. Not range-queryable. |
| `materials` | `array` | No | Materials used in the project as visible rich-text entries. Each entry is indexed for search by text and may carry mention or hashtag facets over that text. |
| `pattern` | `ref` → `#pattern` | No | Optional pattern reference. |
| `status` | `string` | No | Whether the project is in progress or finished at the time this post was created. Snapshot — not a mutable lifecycle flag. knownValues are tokens so new statuses (e.g. planned, frogged) can be added without breaking old clients. |
| `tags` | `array` | No | Structured search tags. Composer responsibility to normalise to ASCII kebab-case (pattern ^[a-z0-9]+(-[a-z0-9]+)*$). AppView search materialisation also merges hashtag facets from post text and faceted project metadata, so this field is not required to duplicate every visible hashtag. |
| `title` | `string` | No | Optional project name, e.g. 'Hitchhiker Shawl' or 'Linen Summer Dress'. Clients showing grid/card views should fall back to truncated text when title is absent. |

### `social.craftsky.project.defs#quilt`

**Type**: `token`

Quilts as a primary project category.

Quilts as a primary project category.

### `social.craftsky.project.defs#romantic`

**Type**: `token`

Romantic design or aesthetic.

Romantic design or aesthetic.

### `social.craftsky.project.defs#seasonal`

**Type**: `token`

Seasonal design or aesthetic.

Seasonal design or aesthetic.

### `social.craftsky.project.defs#sport`

**Type**: `token`

Sport weight yarn.

Sport weight yarn.

### `social.craftsky.project.defs#sporty`

**Type**: `token`

Sporty or athletic-inspired design.

Sporty or athletic-inspired design.

### `social.craftsky.project.defs#stripes`

**Type**: `token`

Striped design.

Striped design.

### `social.craftsky.project.defs#superBulky`

**Type**: `token`

Super bulky weight yarn.

Super bulky weight yarn.

### `social.craftsky.project.defs#toyHobby`

**Type**: `token`

Toys, hobby objects, games, dolls, and play items.

Toys, hobby objects, games, dolls, and play items.

### `social.craftsky.project.defs#traditional`

**Type**: `token`

Traditional design or aesthetic.

Traditional design or aesthetic.

### `social.craftsky.project.defs#vintage`

**Type**: `token`

Vintage or retro-inspired design.

Vintage or retro-inspired design.

### `social.craftsky.project.defs#whimsical`

**Type**: `token`

Whimsical or fanciful design.

Whimsical or fanciful design.

### `social.craftsky.project.defs#worsted`

**Type**: `token`

Worsted weight yarn.

Worsted weight yarn.

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "abstract": {
      "description": "Abstract or non-representational design.",
      "type": "token"
    },
    "accessory": {
      "description": "Worn or carried accessories.",
      "type": "token"
    },
    "alteration": {
      "description": "Mending, repair, refashioning, or adjustment of an existing item.",
      "type": "token"
    },
    "animal": {
      "description": "Animal-themed design or motif.",
      "type": "token"
    },
    "aran": {
      "description": "Aran weight yarn.",
      "type": "token"
    },
    "boho": {
      "description": "Boho or bohemian-inspired design.",
      "type": "token"
    },
    "botanical": {
      "description": "Botanical, leaf, plant, or garden-inspired design.",
      "type": "token"
    },
    "bulky": {
      "description": "Bulky weight yarn.",
      "type": "token"
    },
    "checkerboard": {
      "description": "Checkerboard or checked design.",
      "type": "token"
    },
    "colorblock": {
      "description": "Color-blocked design.",
      "type": "token"
    },
    "component": {
      "description": "Motifs, swatches, parts, trims, blocks, appliques, or other components.",
      "type": "token"
    },
    "costume": {
      "description": "Costume, cosplay, theatre, or fancy-dress projects.",
      "type": "token"
    },
    "cottagecore": {
      "description": "Cottagecore design or aesthetic.",
      "type": "token"
    },
    "dk": {
      "description": "DK weight yarn.",
      "type": "token"
    },
    "fingering": {
      "description": "Fingering weight yarn.",
      "type": "token"
    },
    "floral": {
      "description": "Floral design, motif, or aesthetic.",
      "type": "token"
    },
    "folk": {
      "description": "Folk-inspired design or aesthetic.",
      "type": "token"
    },
    "garment": {
      "description": "Clothing worn on the body.",
      "type": "token"
    },
    "gauge": {
      "description": "Structured stitch gauge measured over a stated distance. Rows are optional because many crafters record only stitch gauge.",
      "properties": {
        "measurement": {
          "description": "Measurement distance for the gauge swatch, interpreted with unit.",
          "minimum": 1,
          "type": "integer"
        },
        "rows": {
          "description": "Number of rows or rounds measured, when recorded.",
          "minimum": 1,
          "type": "integer"
        },
        "stitches": {
          "description": "Number of stitches measured across the gauge swatch.",
          "minimum": 1,
          "type": "integer"
        },
        "unit": {
          "description": "Measurement unit for the gauge swatch.",
          "knownValues": [
            "cm",
            "in"
          ],
          "maxGraphemes": 10,
          "maxLength": 10,
          "type": "string"
        }
      },
      "required": [
        "stitches",
        "measurement",
        "unit"
      ],
      "type": "object"
    },
    "geometric": {
      "description": "Geometric design, motif, or layout.",
      "type": "token"
    },
    "gothic": {
      "description": "Gothic design or aesthetic.",
      "type": "token"
    },
    "holiday": {
      "description": "Holiday-themed design.",
      "type": "token"
    },
    "homeGoods": {
      "description": "Household items and decor.",
      "type": "token"
    },
    "lace": {
      "description": "Lace weight yarn.",
      "type": "token"
    },
    "lettering": {
      "description": "Design featuring lettering, words, initials, or typography.",
      "type": "token"
    },
    "material": {
      "description": "One visible material entry for a project. Rich-text annotations are scoped to text.",
      "properties": {
        "facets": {
          "description": "Byte-range annotations over text for material mentions and hashtags.",
          "items": {
            "ref": "app.bsky.richtext.facet",
            "type": "ref"
          },
          "type": "array"
        },
        "text": {
          "description": "Visible material text, e.g. '3m of @sewmesunshine.bsky.social #viscose fabric'.",
          "maxGraphemes": 100,
          "maxLength": 1000,
          "type": "string"
        }
      },
      "required": [
        "text"
      ],
      "type": "object"
    },
    "maximalist": {
      "description": "Maximalist design or aesthetic.",
      "type": "token"
    },
    "medical": {
      "description": "Medical, adaptive, support, or care-related projects.",
      "type": "token"
    },
    "minimalist": {
      "description": "Minimalist design or aesthetic.",
      "type": "token"
    },
    "modern": {
      "description": "Modern design or aesthetic.",
      "type": "token"
    },
    "nautical": {
      "description": "Nautical or maritime-inspired design.",
      "type": "token"
    },
    "novelty": {
      "description": "Novelty or playful themed design.",
      "type": "token"
    },
    "other": {
      "description": "Intentionally uncategorized or not covered by the current vocabulary.",
      "type": "token"
    },
    "pattern": {
      "description": "Optional metadata for the pattern used. Every field is optional. Self-drafted patterns may still carry a name, difficulty, URL, designer, or publisher.",
      "properties": {
        "designer": {
          "description": "The person or people who designed the pattern. Free text so physical patterns, indie designers, and multiple-designer credits can be represented without account references. Rich-text annotations for this string live in designerFacets.",
          "maxGraphemes": 200,
          "maxLength": 500,
          "type": "string"
        },
        "designerFacets": {
          "description": "Byte-range annotations over 'designer'. Mention facets may notify credited Craftsky accounts.",
          "items": {
            "ref": "app.bsky.richtext.facet",
            "type": "ref"
          },
          "type": "array"
        },
        "difficulty": {
          "description": "Pattern difficulty. A property of the pattern, not the post. Self-drafted patterns may include the author's own rating. knownValues are tokens.",
          "knownValues": [
            "social.craftsky.feed.defs#beginner",
            "social.craftsky.feed.defs#confidentBeginner",
            "social.craftsky.feed.defs#intermediate",
            "social.craftsky.feed.defs#advanced"
          ],
          "maxGraphemes": 100,
          "maxLength": 100,
          "type": "string"
        },
        "name": {
          "description": "Pattern name or visible pattern hashtag, e.g. 'Simplicity 8265', 'Hitchhiker Shawl', or '#hitchhiker'. Useful when there is no URL (e.g. a physical pattern), or alongside a URL as a display label. Rich-text annotations for this string live in nameFacets.",
          "maxGraphemes": 200,
          "maxLength": 500,
          "type": "string"
        },
        "nameFacets": {
          "description": "Byte-range annotations over 'name'. Used for pattern hashtags and future links/mentions in the visible pattern name string.",
          "items": {
            "ref": "app.bsky.richtext.facet",
            "type": "ref"
          },
          "type": "array"
        },
        "publisher": {
          "description": "The person, company, or entity that published the pattern. Optional and free text because pattern publishing differs across crafts and eras. Rich-text annotations for this string live in publisherFacets.",
          "maxGraphemes": 200,
          "maxLength": 500,
          "type": "string"
        },
        "publisherFacets": {
          "description": "Byte-range annotations over 'publisher'. Mention facets may notify credited Craftsky accounts.",
          "items": {
            "ref": "app.bsky.richtext.facet",
            "type": "ref"
          },
          "type": "array"
        },
        "selfDrafted": {
          "description": "True when the author identifies the pattern as self-drafted. Omit when false. This may coexist with other pattern metadata.",
          "type": "boolean"
        },
        "url": {
          "description": "Link to the pattern.",
          "format": "uri",
          "type": "string"
        }
      },
      "type": "object"
    },
    "pet": {
      "description": "Pet clothing, bedding, toys, and accessories.",
      "type": "token"
    },
    "plaid": {
      "description": "Plaid or tartan-inspired design.",
      "type": "token"
    },
    "project": {
      "description": "Wraps a craft project's shared fields (#projectCommon) and optional craft-specific fields (#details, open union). The wrapper exists so shared fields live in one place (common) while per-craft specialisations are added additively via the union. See ADR 001.",
      "properties": {
        "common": {
          "description": "Shared project fields that apply across all crafts.",
          "ref": "#projectCommon",
          "type": "ref"
        },
        "details": {
          "description": "Optional craft-specific fields. Open union — new crafts add new variants here without breaking existing records.",
          "refs": [
            "social.craftsky.project.sewing#details",
            "social.craftsky.project.quilting#details",
            "social.craftsky.project.crochet#details",
            "social.craftsky.project.knitting#details"
          ],
          "type": "union"
        }
      },
      "required": [
        "common"
      ],
      "type": "object"
    },
    "projectCommon": {
      "description": "Project fields shared across every craft. A post with project.common present but no project.details is a valid craft-tagged project post without specialised fields — useful when craftType references a craft that has no #details lexicon yet.",
      "properties": {
        "colors": {
          "description": "Primary colors used in the project, normalized by clients for search and filtering. knownValues are open suggestions; clients may write other bounded color strings when needed.",
          "items": {
            "knownValues": [
              "black",
              "white",
              "gray",
              "brown",
              "beige",
              "red",
              "orange",
              "yellow",
              "green",
              "blue",
              "purple",
              "pink",
              "cream",
              "gold",
              "silver",
              "multicolor",
              "natural"
            ],
            "maxGraphemes": 64,
            "maxLength": 64,
            "type": "string"
          },
          "maxLength": 10,
          "type": "array"
        },
        "craftType": {
          "description": "The craft this project belongs to. Required — a project post without a craft type is meaningless. knownValues are tokens; new crafts can be added to feed.defs without breaking old clients.",
          "knownValues": [
            "social.craftsky.feed.defs#knitting",
            "social.craftsky.feed.defs#crochet",
            "social.craftsky.feed.defs#sewing",
            "social.craftsky.feed.defs#embroidery",
            "social.craftsky.feed.defs#quilting"
          ],
          "maxGraphemes": 100,
          "maxLength": 100,
          "type": "string"
        },
        "designTags": {
          "description": "Visual design, motif, or aesthetic tags for the project, normalized by clients for cross-craft search and filtering. knownValues are open suggestions; clients may write other bounded design strings when needed.",
          "items": {
            "knownValues": [
              "social.craftsky.project.defs#floral",
              "social.craftsky.project.defs#botanical",
              "social.craftsky.project.defs#animal",
              "social.craftsky.project.defs#geometric",
              "social.craftsky.project.defs#abstract",
              "social.craftsky.project.defs#stripes",
              "social.craftsky.project.defs#colorblock",
              "social.craftsky.project.defs#plaid",
              "social.craftsky.project.defs#checkerboard",
              "social.craftsky.project.defs#lettering",
              "social.craftsky.project.defs#novelty",
              "social.craftsky.project.defs#holiday",
              "social.craftsky.project.defs#seasonal",
              "social.craftsky.project.defs#traditional",
              "social.craftsky.project.defs#modern",
              "social.craftsky.project.defs#vintage",
              "social.craftsky.project.defs#minimalist",
              "social.craftsky.project.defs#maximalist",
              "social.craftsky.project.defs#whimsical",
              "social.craftsky.project.defs#folk",
              "social.craftsky.project.defs#boho",
              "social.craftsky.project.defs#cottagecore",
              "social.craftsky.project.defs#gothic",
              "social.craftsky.project.defs#romantic",
              "social.craftsky.project.defs#nautical",
              "social.craftsky.project.defs#sporty"
            ],
            "maxGraphemes": 64,
            "maxLength": 64,
            "type": "string"
          },
          "maxLength": 10,
          "type": "array"
        },
        "duration": {
          "description": "Free-text description of how long the project took, e.g. '3 weeks', 'a weekend', '6 months of evenings'. Deliberately unstructured — crafters describe duration informally. Not range-queryable.",
          "maxGraphemes": 100,
          "maxLength": 500,
          "type": "string"
        },
        "materials": {
          "description": "Materials used in the project as visible rich-text entries. Each entry is indexed for search by text and may carry mention or hashtag facets over that text.",
          "items": {
            "ref": "#material",
            "type": "ref"
          },
          "maxLength": 10,
          "type": "array"
        },
        "pattern": {
          "description": "Optional pattern reference.",
          "ref": "#pattern",
          "type": "ref"
        },
        "status": {
          "description": "Whether the project is in progress or finished at the time this post was created. Snapshot — not a mutable lifecycle flag. knownValues are tokens so new statuses (e.g. planned, frogged) can be added without breaking old clients.",
          "knownValues": [
            "social.craftsky.feed.defs#wip",
            "social.craftsky.feed.defs#finished"
          ],
          "maxGraphemes": 100,
          "maxLength": 100,
          "type": "string"
        },
        "tags": {
          "description": "Structured search tags. Composer responsibility to normalise to ASCII kebab-case (pattern ^[a-z0-9]+(-[a-z0-9]+)*$). AppView search materialisation also merges hashtag facets from post text and faceted project metadata, so this field is not required to duplicate every visible hashtag.",
          "items": {
            "maxGraphemes": 64,
            "maxLength": 64,
            "type": "string"
          },
          "maxLength": 10,
          "type": "array"
        },
        "title": {
          "description": "Optional project name, e.g. 'Hitchhiker Shawl' or 'Linen Summer Dress'. Clients showing grid/card views should fall back to truncated text when title is absent.",
          "maxGraphemes": 200,
          "maxLength": 500,
          "type": "string"
        }
      },
      "required": [
        "craftType"
      ],
      "type": "object"
    },
    "quilt": {
      "description": "Quilts as a primary project category.",
      "type": "token"
    },
    "romantic": {
      "description": "Romantic design or aesthetic.",
      "type": "token"
    },
    "seasonal": {
      "description": "Seasonal design or aesthetic.",
      "type": "token"
    },
    "sport": {
      "description": "Sport weight yarn.",
      "type": "token"
    },
    "sporty": {
      "description": "Sporty or athletic-inspired design.",
      "type": "token"
    },
    "stripes": {
      "description": "Striped design.",
      "type": "token"
    },
    "superBulky": {
      "description": "Super bulky weight yarn.",
      "type": "token"
    },
    "toyHobby": {
      "description": "Toys, hobby objects, games, dolls, and play items.",
      "type": "token"
    },
    "traditional": {
      "description": "Traditional design or aesthetic.",
      "type": "token"
    },
    "vintage": {
      "description": "Vintage or retro-inspired design.",
      "type": "token"
    },
    "whimsical": {
      "description": "Whimsical or fanciful design.",
      "type": "token"
    },
    "worsted": {
      "description": "Worsted weight yarn.",
      "type": "token"
    }
  },
  "description": "Shared objects and tokens for craft project metadata. These are used by social.craftsky.feed.post and multiple social.craftsky.project.* detail lexicons.",
  "id": "social.craftsky.project.defs",
  "lexicon": 1
}
```
