@mcptoolshop/style-dataset-lab 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.2.0] - 2026-04-14
6
+
7
+ - Added `templates/` with blank constitution, review rubric, and example prompt pack
8
+ - npm package now ships scripts + templates only (zero game data)
9
+ - Fixed game data leak in v1.0.0/v1.1.0 npm packages (games/ was included in tarball)
10
+ - All docs reframed around the pipeline (canon, prompts, generate, curate, bind, compare, export)
11
+ - README, handbook, and landing page updated for v1.2.0
12
+
5
13
  ## [1.1.0] - 2026-04-14
6
14
 
7
15
  - Monorepo restructure: each game lives in `games/<name>/` with isolated canon, records, and assets
package/README.md CHANGED
@@ -13,105 +13,106 @@
13
13
 
14
14
  # style-dataset-lab
15
15
 
16
- Visual dataset factory -- generate, curate, and export multimodal training data for VLM fine-tuning.
16
+ A production pipeline for visual dataset creation -- from canon rules to structured prompts to ComfyUI generation to curated, canon-bound training data.
17
17
 
18
18
  ## What this is
19
19
 
20
- A **monorepo** toolkit for building **trainable visual truth** across multiple games. Each game gets its own data directory; scripts are shared. Every asset carries three things:
20
+ A **pipeline** for building structured visual training datasets. You write style rules (canon), compose prompts, generate with ComfyUI, curate with per-dimension scoring, bind judgments to canon rules, and export in 10 formats via [`@mcptoolshop/repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset).
21
+
22
+ The pipeline is game-agnostic. Each game gets its own data directory under `games/<name>/`; the 13 scripts and blank templates are shared. Every asset produced carries three things:
21
23
 
22
24
  1. **Image pixels** -- generated by ComfyUI with full provenance (checkpoint, LoRA, seed, sampler, cfg)
23
25
  2. **Canon explanation** -- why this is on-style or off-style, grounded in a style constitution
24
26
  3. **Quality judgment** -- approved/rejected with per-dimension scores and cited rules
25
27
 
26
- The output feeds into [`@mcptoolshop/repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset) to produce multimodal training data in 10 formats: TRL, LLaVA, Qwen2-VL, Axolotl, LLaMA-Factory, ShareGPT, RLHF pairs, DPO, captioning, and classification.
27
-
28
28
  ## Security model
29
29
 
30
30
  **Local-only.** style-dataset-lab talks to ComfyUI on `localhost:8188` and never makes external network requests. No telemetry, no analytics, no phoning home. Image generation happens entirely on your GPU. Records and canon data stay on your filesystem.
31
31
 
32
- ## Dataset stats (Star Freight)
32
+ ## What the npm package ships
33
+
34
+ `npm install @mcptoolshop/style-dataset-lab` gives you:
33
35
 
34
- The included `games/star-freight/` dataset ships with the repo as a working example:
36
+ - **13 scripts** -- generate, curate, compare, canon-bind, painterly, identity generation, ControlNet/IP-Adapter generation, bulk curation, migration
37
+ - **Blank templates** -- starter constitution, review rubric, and example prompt pack in `templates/`
35
38
 
36
- | Metric | Value |
37
- |--------|-------|
38
- | Curated records | 1,182 |
39
- | Total assets | 2,571 (893 approved, 887 painterly variants) |
40
- | Prompt waves | 28 |
41
- | Visual categories | 18 (costumes, ships, interiors, equipment, environments, species, stations, signage, lighting, cargo, architecture, creatures, surfaces, daily life, planetary, damage/repair, alien biology, lived-in details) |
42
- | Pairwise comparisons | 6 human + 71 synthetic |
43
- | Distinct rejection types | 30+ |
44
- | Identity packet system | Named characters with faction DNA, rank, and visual anchors |
45
- | Export formats | 10 (via @mcptoolshop/repo-dataset) |
39
+ The npm package does **not** include game data. Clone the repo if you want the Star Freight example (1,182 records, 28 prompt waves, 18 visual categories).
46
40
 
47
41
  ## Install
48
42
 
49
43
  ```bash
50
- # Install scripts globally (optional)
51
- npm install -g @mcptoolshop/style-dataset-lab
44
+ # Get the pipeline scripts + templates
45
+ npm install @mcptoolshop/style-dataset-lab
52
46
 
53
- # Clone the repo (includes star-freight game data)
47
+ # Or clone the repo for the Star Freight example data
54
48
  git clone https://github.com/mcp-tool-shop-org/style-dataset-lab
55
49
  cd style-dataset-lab
56
50
  npm install
57
51
  ```
58
52
 
59
- To start a new game, create its directory structure:
53
+ To start a new game from the templates:
60
54
 
61
55
  ```bash
62
- mkdir -p games/my-game/{canon,records,comparisons,inputs/prompts,outputs/{candidates,approved,rejected},exports}
56
+ # Copy templates into your game directory
57
+ mkdir -p games/my-game/{records,comparisons,inputs/prompts,outputs/{candidates,approved,rejected,borderline,painterly},exports}
58
+ cp -r templates/canon games/my-game/canon
59
+ cp templates/inputs/prompts/example-wave.json games/my-game/inputs/prompts/wave1.json
60
+ # Edit the canon and prompts, then generate
63
61
  ```
64
62
 
65
- Or use the existing `games/star-freight/` data to explore the workflow immediately.
66
-
67
63
  ## Monorepo structure
68
64
 
69
- Each game lives in `games/<name>/` with its own canon, records, and assets. Scripts are shared and accept `--game <name>` (defaults to `star-freight`).
65
+ The pipeline lives in `scripts/` and `templates/`. Each game lives in `games/<name>/` with its own canon, records, and assets. Scripts accept `--game <name>` (defaults to `star-freight`).
70
66
 
71
67
  ```
72
68
  style-dataset-lab/
73
- scripts/ Shared tooling (generate, curate, compare, etc.)
69
+ scripts/ 13 pipeline scripts (generate, curate, compare, etc.)
70
+ templates/ Blank starting point for new games
71
+ canon/ Starter constitution + review rubric
72
+ inputs/prompts/ Example prompt pack
74
73
  games/
75
- star-freight/ Star Freight universe data
74
+ star-freight/ Star Freight example (1,182 records, repo-only)
76
75
  canon/ Style constitution, review rubric, species canon
77
76
  records/ Per-asset JSON (provenance + judgment + canon)
78
77
  comparisons/ A-vs-B preference judgments
79
78
  inputs/ Prompt packs, identity packets, references
80
79
  outputs/ Generated images (gitignored)
81
80
  exports/ repo-dataset output (gitignored)
82
- fractured-road/ (add your next game here)
83
- canon/
84
- records/
85
- ...
81
+ <your-game>/ Add more games with the same structure
86
82
  ```
87
83
 
88
- ## Workflow
84
+ ## Pipeline workflow
85
+
86
+ The full pipeline from canon to training export:
89
87
 
90
88
  ```bash
91
- # 1. Start ComfyUI
92
- # (point it at your checkpoint + LoRA setup)
89
+ # 1. Write your canon -- style constitution + review rubric
90
+ # (start from templates/ or write from scratch)
91
+
92
+ # 2. Create prompt packs in inputs/prompts/
93
+ # (see templates/inputs/prompts/example-wave.json)
93
94
 
94
- # 2. Generate candidates from a prompt pack
95
+ # 3. Start ComfyUI and generate candidates
95
96
  npm run generate -- --game star-freight inputs/prompts/wave1.json
96
97
  npm run generate -- --game star-freight inputs/prompts/wave1.json --dry-run
97
98
 
98
- # 3. Generate identity-packet characters
99
+ # 4. Generate identity-packet characters (named subjects)
99
100
  npm run generate:identity -- --game star-freight inputs/identity-packets/wave27a.json
100
101
 
101
- # 4. Generate painterly variants of approved assets
102
- npm run painterly -- --game star-freight
103
-
104
102
  # 5. Curate -- approve, reject, or mark borderline
105
103
  npm run curate -- --game star-freight <asset_id> approved "explanation"
106
104
  npm run curate -- --game star-freight <asset_id> rejected "explanation" --failures "too_clean"
107
105
 
108
- # 6. Bind canon explanations to assets
106
+ # 6. Generate painterly variants of approved assets
107
+ npm run painterly -- --game star-freight
108
+
109
+ # 7. Bind canon explanations to curated assets
109
110
  npm run canon-bind -- --game star-freight
110
111
 
111
- # 7. Record pairwise comparisons
112
+ # 8. Record pairwise comparisons
112
113
  npm run compare -- --game star-freight <asset_a> <asset_b> a "A has better faction read"
113
114
 
114
- # 8. Export training data via repo-dataset
115
+ # 9. Export training data via repo-dataset
115
116
  repo-dataset visual generate ./games/star-freight --format trl
116
117
  repo-dataset visual inspect ./games/star-freight
117
118
  ```
@@ -119,10 +120,13 @@ repo-dataset visual inspect ./games/star-freight
119
120
  ## Adding a new game
120
121
 
121
122
  ```bash
122
- mkdir -p games/my-game/{canon,records,comparisons,inputs/prompts,outputs/{candidates,approved,rejected},exports}
123
- # Write your canon/constitution.md and canon/review-rubric.md
124
- # Create prompt packs in inputs/prompts/
125
- # Then generate, curate, and export as above with --game my-game
123
+ # Create structure and copy blank templates
124
+ mkdir -p games/my-game/{records,comparisons,inputs/prompts,outputs/{candidates,approved,rejected,borderline,painterly},exports}
125
+ cp -r templates/canon games/my-game/canon
126
+ cp templates/inputs/prompts/example-wave.json games/my-game/inputs/prompts/wave1.json
127
+
128
+ # Edit your canon/constitution.md and canon/review-rubric.md
129
+ # Edit your prompt pack, then run the pipeline with --game my-game
126
130
  ```
127
131
 
128
132
  ## Per-game directory layout
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mcptoolshop/style-dataset-lab",
3
- "version": "1.1.0",
4
- "description": "Visual dataset factory — generate, curate, and export multimodal training data for VLM fine-tuning",
3
+ "version": "1.2.0",
4
+ "description": "Visual dataset pipeline — canon to prompts to ComfyUI generation to curated, canon-bound training data",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "generate": "node scripts/generate.js",
@@ -15,9 +15,7 @@
15
15
  },
16
16
  "files": [
17
17
  "scripts/",
18
- "games/*/canon/",
19
- "games/*/inputs/",
20
- "package.json",
18
+ "templates/",
21
19
  "README.md",
22
20
  "LICENSE",
23
21
  "SECURITY.md",
@@ -0,0 +1,44 @@
1
+ # Style Constitution
2
+
3
+ > Define the visual rules that every generated asset must follow.
4
+ > Each rule gets an ID, category, and description. The curation scripts score assets against these rules.
5
+
6
+ ## Core Rules
7
+
8
+ ### Silhouette & Shape Language
9
+
10
+ - **SIL-01**: [Describe the silhouette requirements — what shapes define your style?]
11
+ - **SIL-02**: [Describe faction/character shape differentiation]
12
+
13
+ ### Color & Palette
14
+
15
+ - **COL-01**: [Describe the color rules — palette constraints, faction colors, mood]
16
+ - **COL-02**: [Describe what colors are forbidden and why]
17
+
18
+ ### Material & Texture
19
+
20
+ - **MAT-01**: [Describe material rules — worn vs clean, organic vs synthetic]
21
+ - **MAT-02**: [Describe texture expectations — grit level, surface detail]
22
+
23
+ ### Composition & Framing
24
+
25
+ - **CMP-01**: [Describe framing rules — camera angle, subject placement]
26
+
27
+ ### Mood & Atmosphere
28
+
29
+ - **MOD-01**: [Describe the emotional tone — tense, serene, chaotic]
30
+
31
+ ## Scoring Dimensions
32
+
33
+ Assets are scored 0.0–1.0 on each dimension during curation:
34
+
35
+ | Dimension | What it measures |
36
+ |-----------|-----------------|
37
+ | silhouette | Shape language clarity and faction read |
38
+ | palette | Color accuracy and mood alignment |
39
+ | material | Surface texture and wear level |
40
+ | composition | Framing and visual hierarchy |
41
+ | mood | Emotional tone match |
42
+ | detail | Level of meaningful detail |
43
+ | consistency | Coherence with existing approved assets |
44
+ | originality | Avoids generic/stock-art patterns |
@@ -0,0 +1,30 @@
1
+ # Review Rubric
2
+
3
+ ## Quick Decision Tree
4
+
5
+ 1. Does the image pass the **style test**? (Would it look at home next to approved assets?)
6
+ - No → REJECT with cited rule violations
7
+ 2. Does it pass **all constitution rules** at ≥0.6 score?
8
+ - No → Check if fixable with img2img → BORDERLINE or REJECT
9
+ 3. Does it add **new signal** the dataset doesn't have?
10
+ - Yes → APPROVE
11
+ - No (duplicate composition/subject) → REJECT as redundant
12
+
13
+ ## Approval Criteria
14
+
15
+ - All scoring dimensions ≥ 0.6
16
+ - No critical rule violations
17
+ - Adds value to the dataset (new subject, angle, or variation)
18
+
19
+ ## Rejection Criteria
20
+
21
+ - Any scoring dimension < 0.4
22
+ - Violates a core constitution rule
23
+ - Too similar to existing approved assets
24
+ - Generic/stock-art quality (no distinctive style)
25
+
26
+ ## Borderline Criteria
27
+
28
+ - One or two dimensions between 0.4–0.6
29
+ - Fixable with img2img post-processing
30
+ - Strong composition but weak on style details
@@ -0,0 +1,27 @@
1
+ {
2
+ "wave": "wave1",
3
+ "description": "First generation wave — core subjects for your visual style",
4
+ "defaults": {
5
+ "checkpoint": "dreamshaperXL_v21TurboDPMSDE.safetensors",
6
+ "lora": { "name": "classipeintxl_v21.safetensors", "weight": 1.0 },
7
+ "width": 1024,
8
+ "height": 1024,
9
+ "steps": 8,
10
+ "cfg": 2.0,
11
+ "sampler": "dpmpp_sde",
12
+ "scheduler": "karras",
13
+ "negative": "photorealistic, photograph, 3d render, smooth CG, sharp photo detail"
14
+ },
15
+ "subjects": [
16
+ {
17
+ "id": "subject_a",
18
+ "variations": 2,
19
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE YOUR SUBJECT HERE], painterly concept art, canvas grain"
20
+ },
21
+ {
22
+ "id": "subject_b",
23
+ "variations": 2,
24
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE YOUR SUBJECT HERE], painterly concept art, canvas grain"
25
+ }
26
+ ]
27
+ }