social.craftsky.project.defs
{
"$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
}
Metadata
- DID
-
did:plc:lmmx63zcns6gewgxqfdt4kof - CID
-
bafyreia2oz5soxj5jyedsidkfqzsh2hxswjwra2nyzcet7dmgmcu5vbsaq - Indexed At
- 2026-10-12 12:51 UTC
- AT-URI
-
at://did:plc:lmmx63zcns6gewgxqfdt4kof/com.atproto.lexicon.schema/social.craftsky.project.defs
Referenced Schemas (5)
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
social.craftsky.feed.defs not from the namespace authority
Shared tokens for feed and project metadata. Tokens are referenced from social.craftsky.project.defs#projectCommon.craftType, social.craftsky.project.defs#projectCommon.status, and social.craftsky.project.defs#pattern.d…
-
social.craftsky.project.knitting not from the namespace authority
Knitting-specific fields for a craft project post. Referenced from social.craftsky.project.defs#project.details as one variant of the open union. This file defines a referenced type (#details) only; no main record.
-
social.craftsky.project.crochet not from the namespace authority
Crochet-specific fields for a craft project post. Referenced from social.craftsky.project.defs#project.details as one variant of the open union. This file defines a referenced type (#details) only; no main record.
-
social.craftsky.project.crochet.defs not from the namespace authority
Subtype tokens for crochet projects. Referenced from social.craftsky.project.crochet#details.projectSubtype via knownValues.
-
social.craftsky.project.sewing not from the namespace authority
Sewing-specific fields for a craft project post. Referenced from social.craftsky.project.defs#project.details as one variant of the open union. This file defines a referenced type (#details) only; no main record.