# Dressmaker Wiki: data guide for machines

## License

Cite dressmakerwiki.com. Quote a short passage and link back. Use /dbdata, llms.txt, and AGENTS.md to answer a question or to cite a page.

Do not copy this site, its JSON, its articles, or its look to run another Dressmaker wiki or database.

Game names, art, and table values belong to Cozy Lives and Free Lives. The writing, cross-links, formulas, and tools (the planner and the calculators) on this site belong here.

Full terms: https://dressmakerwiki.com/terms

Unofficial fan wiki for **Dressmaker** (Steam app 4019220) by Cozy Lives, published by Free Lives. Game version **0.7.0**, Steam build **25508059**, developer Build 410. Game values are read from the game files of that build; the achievement percents come from Steam. The site's build writes these files from the same data as the pages, so they match the pages.

Start with `/dbdata/index.json` (the manifest), then load the file you need.

## Files (`/dbdata/`)

| File | Rows | Size | What it is |
|---|---|---|---|
| `fabrics.json` | 348 | 226 KB | Fabrics: type, colours, cost per metre, shop rank, how to get, tag values. |
| `fabric_types.json` | 7 | 2 KB | Fabric types (Cotton, Silk, ...): fabric count. |
| `colours.json` | 11 | 2 KB | Colour words of the game; fabrics.colours joins here. |
| `accessories.json` | 330 | 159 KB | Accessories: type, cost, shop rank, how to get, tag values. |
| `accessory_types.json` | 11 | 3 KB | Accessory types: count, sold by the metre or by the item. |
| `patterns.json` | 155 | 578 KB | Patterns (bodice, skirt, sleeve, collar): unlock, tag values, variants, pieces, fabric estimate in metres. |
| `styles.json` | 22 | 5 KB | Tags (the game's item tags, such as Romantic or Goth). |
| `commissions.json` | 78 | 97 KB | Commissions: client, budget, requirement lines as the game words them, rewards. |
| `clients.json` | 10 | 8 KB | Clients: their commissions, gift quest, patterns unlocked per friendship star, measurements. |
| `achievements.json` | 32 | 22 KB | Steam achievements: Steam text in three languages, hidden flag, how each unlocks. |
| `ranks.json` | 51 | 24 KB | Shop ranks 0 to 50: title in three languages and the fabrics and accessories each rank adds. |
| `index.json` | - | - | Manifest: build, license, trees, every file with rows, size and joins. |

Every file is `{"_meta": {...}, "rows": [...]}`. `_meta` gives the row count, the build, the hub page, the license and the join keys. A row is one thing that has a page on the site.

## Fields

### fabrics.json

- `key`: asset name of the fabric (join key)
- `name`: {en, zh-Hans, ja} game name
- `url / page`: the English page / the language-neutral path
- `fabric_type`: fabric_types.key
- `colours`: list of colours.key
- `cost, cost_unit`: shop price and its unit (gold per metre)
- `shop_rank`: the shop rank (0 to 50) that puts it on sale
- `unlock`: list of {type: start | prestige (rank) | character_star (client, star)}
- `style_values`: list of {style: styles.key, value}: the item's value for that tag, as stored
- Joins: fabric_type -> fabric_types.key; colours[] -> colours.key; style_values[].style -> styles.key

### fabric_types.json

- `key, name, url, page`: as above
- `fabric_count`: fabrics of this type you can buy (rows of fabrics.json)

### colours.json

- `key, name, url, page`: as above
- `fabric_count`: fabrics with this colour you can buy (rows of fabrics.json)

### accessories.json

- `key, name, url, page`: as above
- `accessory_type`: accessory_types.key
- `cost, cost_unit`: shop price and its unit
- `shop_rank, unlock, style_values`: as in fabrics
- `bead_type`: Tassel, Jewel or Bell, only on bead accessories
- Joins: accessory_type -> accessory_types.key; style_values[].style -> styles.key

### accessory_types.json

- `key, name, url, page`: as above
- `accessory_count`: accessories of this type you can buy (rows of accessories.json)
- `sold_by_the_metre`: true when the type is priced and placed by the metre

### patterns.json

- `key, name, url, page`: as above
- `part`: Bodice, Skirt, Sleeve or Collar
- `unlock`: start, or character_star {client: clients.key, star}
- `style_values`: as in fabrics
- `collar_type, skirt_type, uses_sleeves, fits_sleeveless_bodices`: part settings (present only on the parts that have them)
- `hides_in_picker`: patterns.key list that this bodice hides in the picker
- `variants[]`: variant (1-based), piece_count, fabric_estimate_m (the sketchbook's metres, 2 decimals, for this part alone), fabric_estimate_m_exact, total_area, fabric_cost_factor_total (fabric gold = factor x fabric cost when one fabric is used)
- `variants[].pieces[]`: name {en, zh-Hans, ja}, zones (mannequin zone names), grain_direction [x, y, z], bias_cut, area (square game units), share_of_part_pct, fabric_cost_factor
- Joins: unlock[].client -> clients.key; style_values[].style -> styles.key; hides_in_picker[] -> patterns.key

### styles.json

- `key, name, url, page`: as above
- `fabrics_with_value, accessories_with_value, patterns_with_value`: rows of those files with a value other than 0 for this tag

### commissions.json

- `key, name, url, page`: as above
- `kind`: story, pigeon or final
- `client, client_url`: clients.key and its page
- `budget`: gold the client pays
- `requirements[]`: type, text {en, zh-Hans, ja} (the game's own line), comparison (AtLeast / AtMost), value, and when set: tag, colour, fabric_type, accessory_type, allowed, avoided, gated
- `rewards`: gold, prestige_success, prestige_fail, prestige_scaled (true: x 6 / (6 + completed dresses)), friendship_success, friendship_fail, fail_reopens
- Joins: client -> clients.key; requirements[].tag -> styles.key; requirements[].colour -> colours.key; requirements[].fabric_type -> fabric_types.key; requirements[].accessory_type -> accessory_types.key

### clients.json

- `key, name, url, page`: as above
- `commissions`: commissions.key list
- `gift_quest`: the client's gift quest (no page of its own)
- `friendship_unlocks[]`: star and the patterns.key it unlocks
- `measurements, measurements_unit`: bust, waist, hips on the mannequin's 0 to 1 scale
- Joins: commissions[] -> commissions.key; friendship_unlocks[].patterns[] -> patterns.key

### achievements.json

- `key`: Steam API name
- `name, description`: Steam title and text {en, zh-Hans, ja}
- `url`: the card on /achievements
- `hidden_on_steam`: true for hidden achievements
- `steam_global_percent`: percent of players who have it (Steam)
- `unlock`: source (asset, code or yarn), verified, and requirements[] (QuestOutcomeRequirement: quest, comparison, outcome, quest_url; HasSeenStoryletRequirement: storyType, gossipReport, newspaper_url) or condition (code thresholds)
- Joins: unlock.requirements[].quest -> commissions.key; unlock.requirements[].gossipReport -> the report on /newspaper

### ranks.json

- `key, rank`: rank 0 to 50
- `title`: {en, zh-Hans, ja} rank title
- `url`: the rank on /ranks
- `new_stock`: fabrics[] and accessories[] (keys) that go on sale at this rank
- Joins: new_stock.fabrics[] -> fabrics.key; new_stock.accessories[] -> accessories.key

## Conventions

- `key` is the game's own asset name. It is the join key between files. Players never see it: show `name` in their language.
- A join key can name a thing with no page of its own (for example a fabric type with one fabric, or a client who has no client page). That key is then not in the target file; a `*_url` field is `null`.
- `name` (and other text) is `{"en", "zh-Hans", "ja"}`, the game's own words. `null` means the game has no text in that language.
- Numbers are the stored values of the game (a tag value of 10 is 10 in the table). Areas are square game units; the game gives no unit.
- Tag words: `styles.key` is the game's tag key (`Risque`, `Goth`); `styles.name.en` is how the game prints it (`Risqué`, `Gothic`).

## URL pattern

- `url` is the English page, absolute. `page` is the path without the language: English = `https://dressmakerwiki.com` + page, Simplified Chinese = `https://dressmakerwiki.com/zh` + page, Japanese = `https://dressmakerwiki.com/ja` + page, Russian = `https://dressmakerwiki.com/ru` + page, Brazilian Portuguese = `https://dressmakerwiki.com/pt-br` + page.
- Clean URLs, no `.html`, no trailing slash. Hubs: `/fabrics`, `/fabric-types`, `/colours`, `/accessories`, `/accessory-types`, `/patterns`, `/styles`, `/commissions`, `/clients`, `/achievements`, `/ranks`.
- Achievements and ranks have no page each: their `url` points to the card or row on `/achievements` or `/ranks`.

## Common questions

- *How much fabric does a pattern take?* `patterns.variants[].fabric_estimate_m` (the sketchbook's estimate for that part). Fabric gold = `fabric_cost_factor_total` x `fabrics.cost` when the part uses one fabric.
- *What does a commission ask?* `commissions.requirements[].text.en`, then `value`, `tag` and the other keys.
- *When does a fabric or accessory go on sale?* `shop_rank`, or `ranks[rank].new_stock`.
- *What does a client unlock?* `clients.friendship_unlocks`.

## Provenance

- Source: the stock game files of Steam build 25508059, read with the site's own extractors. No save data, no mods.
- Rows without a page on the site (things a player cannot get in this build) are not in these files.
- Found a wrong number? Tell us at https://dressmakerwiki.com/feedback.
