@mcptoolshop/style-dataset-lab 2.3.0 → 3.0.1

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.
Files changed (106) hide show
  1. package/CHANGELOG.md +178 -0
  2. package/CODE_OF_CONDUCT.md +9 -0
  3. package/CONTRIBUTING.md +71 -0
  4. package/README.md +82 -9
  5. package/SECURITY.md +6 -5
  6. package/bin/sdlab.js +359 -11
  7. package/lib/adapters/comfyui-runner.js +170 -0
  8. package/lib/adapters/comfyui-workflows.js +163 -0
  9. package/lib/adapters/diffusers-lora.js +7 -2
  10. package/lib/adapters/generic-image-caption.js +6 -1
  11. package/lib/args.js +200 -13
  12. package/lib/batch-compiler.js +122 -0
  13. package/lib/batch-modes.js +111 -0
  14. package/lib/batch-runs.js +237 -0
  15. package/lib/batch-sheet-render.js +209 -0
  16. package/lib/brief-compiler.js +625 -0
  17. package/lib/brief-render.js +205 -0
  18. package/lib/card.js +11 -4
  19. package/lib/comfyui.js +100 -6
  20. package/lib/config.js +68 -3
  21. package/lib/critique-engine.js +413 -0
  22. package/lib/critique-render.js +171 -0
  23. package/lib/deprecation.js +1 -1
  24. package/lib/eval-pack.js +94 -4
  25. package/lib/eval-runs.js +42 -3
  26. package/lib/export.js +144 -34
  27. package/lib/generated-provenance.js +87 -0
  28. package/lib/implementation-packs.js +15 -1
  29. package/lib/log.js +41 -4
  30. package/lib/paths.js +72 -3
  31. package/lib/refine-briefs.js +336 -0
  32. package/lib/reingest-selected.js +184 -0
  33. package/lib/reingest.js +15 -1
  34. package/lib/run-summary.js +132 -0
  35. package/lib/runtime-runs.js +218 -0
  36. package/lib/selections.js +375 -0
  37. package/lib/snapshot.js +100 -7
  38. package/lib/split.js +175 -17
  39. package/lib/training-manifests.js +17 -3
  40. package/lib/training-packages.js +28 -14
  41. package/lib/workflow-profiles.js +161 -0
  42. package/package.json +13 -4
  43. package/scripts/batch-generate.js +176 -0
  44. package/scripts/batch-sheet.js +46 -0
  45. package/scripts/batch-show.js +86 -0
  46. package/scripts/brief-compile.js +134 -0
  47. package/scripts/brief-show.js +53 -0
  48. package/scripts/canon-bind.js +7 -9
  49. package/scripts/card.js +22 -25
  50. package/scripts/compare.js +38 -33
  51. package/scripts/critique-show.js +50 -0
  52. package/scripts/critique.js +70 -0
  53. package/scripts/curate.js +91 -46
  54. package/scripts/doctor.js +172 -6
  55. package/scripts/eligibility.js +17 -14
  56. package/scripts/eval-pack.js +13 -11
  57. package/scripts/eval-run.js +30 -29
  58. package/scripts/export.js +27 -31
  59. package/scripts/generate-controlnet.js +31 -17
  60. package/scripts/generate-identity.js +37 -20
  61. package/scripts/generate-ipadapter.js +22 -16
  62. package/scripts/generate.js +68 -13
  63. package/scripts/implementation-pack.js +19 -14
  64. package/scripts/init.js +137 -17
  65. package/scripts/painterly.js +8 -10
  66. package/scripts/refine.js +119 -0
  67. package/scripts/reingest-selected.js +78 -0
  68. package/scripts/reingest.js +37 -18
  69. package/scripts/run-generate.js +76 -0
  70. package/scripts/run-list.js +58 -0
  71. package/scripts/run-show.js +63 -0
  72. package/scripts/select.js +119 -0
  73. package/scripts/selection-show.js +88 -0
  74. package/scripts/snapshot.js +22 -24
  75. package/scripts/split.js +26 -31
  76. package/scripts/training-manifest.js +29 -24
  77. package/scripts/training-package.js +24 -20
  78. package/scripts/training-profile.js +13 -8
  79. package/scripts/workflow-list.js +61 -0
  80. package/scripts/workflow-show.js +97 -0
  81. package/templates/domains/architecture/inputs/prompts/example-wave.json +32 -0
  82. package/templates/domains/architecture/terminology.json +10 -8
  83. package/templates/domains/architecture/workflows/profiles/environment-moodboard.json +62 -0
  84. package/templates/domains/architecture/workflows/profiles/interior-variant-pack.json +60 -0
  85. package/templates/domains/character-design/inputs/prompts/example-wave.json +32 -0
  86. package/templates/domains/character-design/project.json +4 -2
  87. package/templates/domains/character-design/workflows/profiles/character-portrait-set.json +61 -0
  88. package/templates/domains/character-design/workflows/profiles/expression-sheet.json +59 -0
  89. package/templates/domains/creature-design/inputs/prompts/example-wave.json +32 -0
  90. package/templates/domains/creature-design/project.json +4 -2
  91. package/templates/domains/creature-design/terminology.json +1 -0
  92. package/templates/domains/creature-design/workflows/profiles/creature-portrait-set.json +61 -0
  93. package/templates/domains/creature-design/workflows/profiles/silhouette-exploration.json +58 -0
  94. package/templates/domains/game-art/inputs/prompts/example-wave.json +37 -0
  95. package/templates/domains/game-art/project.json +4 -2
  96. package/templates/domains/game-art/workflows/profiles/character-portrait-set.json +62 -0
  97. package/templates/domains/game-art/workflows/profiles/environment-moodboard.json +61 -0
  98. package/templates/domains/vehicle-mech/inputs/prompts/example-wave.json +37 -0
  99. package/templates/domains/vehicle-mech/project.json +4 -2
  100. package/templates/domains/vehicle-mech/workflows/profiles/variant-pack.json +60 -0
  101. package/templates/domains/vehicle-mech/workflows/profiles/vehicle-silhouette-pack.json +59 -0
  102. package/scripts/bulk-curate-wave2-5.js +0 -138
  103. package/scripts/bulk-curate-waves11-18.js +0 -413
  104. package/scripts/curate-wave25.js +0 -209
  105. package/scripts/migrate-records.js +0 -141
  106. package/templates/inputs/prompts/example-wave.json +0 -27
@@ -0,0 +1,60 @@
1
+ {
2
+ "workflow_id": "interior-variant-pack",
3
+ "label": "Interior Variant Pack",
4
+ "description": "Generate interior space variations exploring layout, mood, and materials.",
5
+ "lane_id": "interior",
6
+ "subject_mode": "optional",
7
+ "output_mode": "variant_pack",
8
+ "output_count": 4,
9
+ "required_reference_roles": [],
10
+ "preferred_reference_tags": ["interior", "approved"],
11
+ "prompt_strategy": {
12
+ "style_prefix": [
13
+ "interior space concept art",
14
+ "atmospheric spatial rendering",
15
+ "functional layout emphasis"
16
+ ],
17
+ "structure": "style_prefix, lane_goal, canon_focus, controlled_variation",
18
+ "must_include": [
19
+ "spatial function",
20
+ "material palette",
21
+ "lighting mood"
22
+ ],
23
+ "optional_blocks": [
24
+ "furniture note",
25
+ "activity note"
26
+ ]
27
+ },
28
+ "negative_strategy": {
29
+ "must_avoid": [
30
+ "empty featureless rooms",
31
+ "modern furniture in period setting",
32
+ "over-cluttered composition"
33
+ ],
34
+ "lane_specific_avoid": [
35
+ "exterior views dominating"
36
+ ],
37
+ "subject_specific_avoid": []
38
+ },
39
+ "canon_focus": [
40
+ "material_language",
41
+ "lighting",
42
+ "composition",
43
+ "era_logic",
44
+ "surface_wear"
45
+ ],
46
+ "drift_guards": [
47
+ "materials must match architectural era",
48
+ "lighting must serve spatial mood",
49
+ "wear must read authentically"
50
+ ],
51
+ "runtime_defaults": {
52
+ "adapter_target": "comfyui",
53
+ "width": 1024,
54
+ "height": 1024,
55
+ "steps": 30,
56
+ "cfg": 6.5,
57
+ "sampler": "dpmpp_2m",
58
+ "seed_mode": "random"
59
+ }
60
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "wave": "wave1",
3
+ "description": "Character design — first wave. Subject IDs match this domain's lane id_patterns (portrait_, full_, expr_) so `sdlab generate` will route each candidate into the correct lane instead of default_lane.",
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": "portrait_hero",
18
+ "variations": 2,
19
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE YOUR HERO — head and shoulders, face detail, expression], painterly concept art, canvas grain"
20
+ },
21
+ {
22
+ "id": "full_body_hero",
23
+ "variations": 2,
24
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE YOUR HERO — full figure standing pose, costume, silhouette], painterly concept art, canvas grain"
25
+ },
26
+ {
27
+ "id": "expr_hero_sheet",
28
+ "variations": 2,
29
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE YOUR HERO — emotion range sheet, consistent face across multiple expressions], painterly concept art, canvas grain"
30
+ }
31
+ ]
32
+ }
@@ -4,8 +4,10 @@
4
4
  "domain": "character-design",
5
5
  "version": "0.1.0",
6
6
  "defaults": {
7
- "checkpoint": "",
8
- "loras": [],
7
+ "checkpoint": "dreamshaperXL_v21TurboDPMSDE.safetensors",
8
+ "loras": [
9
+ { "name": "classipeintxl_v21.safetensors", "weight": 1.0 }
10
+ ],
9
11
  "width": 1024,
10
12
  "height": 1024,
11
13
  "steps": 8,
@@ -0,0 +1,61 @@
1
+ {
2
+ "workflow_id": "character-portrait-set",
3
+ "label": "Character Portrait Set",
4
+ "description": "Generate portrait candidates for a named character.",
5
+ "lane_id": "portrait",
6
+ "subject_mode": "required",
7
+ "output_mode": "portrait_set",
8
+ "output_count": 4,
9
+ "required_reference_roles": ["anchor"],
10
+ "preferred_reference_tags": ["portrait", "approved"],
11
+ "prompt_strategy": {
12
+ "style_prefix": [
13
+ "character portrait concept art",
14
+ "high fidelity facial detail",
15
+ "clean readable silhouette"
16
+ ],
17
+ "structure": "style_prefix, subject_identity, lane_goal, canon_focus, controlled_variation",
18
+ "must_include": [
19
+ "subject identity",
20
+ "costume logic",
21
+ "facial detail"
22
+ ],
23
+ "optional_blocks": [
24
+ "lighting note",
25
+ "expression note"
26
+ ]
27
+ },
28
+ "negative_strategy": {
29
+ "must_avoid": [
30
+ "off-model face",
31
+ "extra accessories",
32
+ "ornamental drift"
33
+ ],
34
+ "lane_specific_avoid": [
35
+ "full body composition",
36
+ "background complexity"
37
+ ],
38
+ "subject_specific_avoid": []
39
+ },
40
+ "canon_focus": [
41
+ "silhouette",
42
+ "costume_logic",
43
+ "palette",
44
+ "anatomy",
45
+ "gesture"
46
+ ],
47
+ "drift_guards": [
48
+ "preserve face structure",
49
+ "preserve age read",
50
+ "preserve canonical materials"
51
+ ],
52
+ "runtime_defaults": {
53
+ "adapter_target": "comfyui",
54
+ "width": 1024,
55
+ "height": 1024,
56
+ "steps": 30,
57
+ "cfg": 6.5,
58
+ "sampler": "dpmpp_2m",
59
+ "seed_mode": "increment"
60
+ }
61
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "workflow_id": "expression-sheet",
3
+ "label": "Expression Sheet",
4
+ "description": "Produce multiple expressions while preserving subject identity.",
5
+ "lane_id": "expression_sheet",
6
+ "subject_mode": "required",
7
+ "output_mode": "expression_sheet",
8
+ "output_count": 6,
9
+ "required_reference_roles": ["anchor"],
10
+ "preferred_reference_tags": ["expression", "approved"],
11
+ "prompt_strategy": {
12
+ "style_prefix": [
13
+ "character expression sheet",
14
+ "consistent identity across expressions",
15
+ "head and shoulders framing"
16
+ ],
17
+ "structure": "style_prefix, subject_identity, canon_focus, controlled_variation",
18
+ "must_include": [
19
+ "subject identity",
20
+ "facial expression variety",
21
+ "consistent costume"
22
+ ],
23
+ "optional_blocks": [
24
+ "emotion label"
25
+ ]
26
+ },
27
+ "negative_strategy": {
28
+ "must_avoid": [
29
+ "face structure drift",
30
+ "hairstyle drift",
31
+ "costume mutation",
32
+ "age drift"
33
+ ],
34
+ "lane_specific_avoid": [
35
+ "full body composition"
36
+ ],
37
+ "subject_specific_avoid": []
38
+ },
39
+ "canon_focus": [
40
+ "anatomy",
41
+ "gesture",
42
+ "costume_logic",
43
+ "palette"
44
+ ],
45
+ "drift_guards": [
46
+ "face structure must remain identical",
47
+ "hairstyle must not change",
48
+ "costume must not mutate"
49
+ ],
50
+ "runtime_defaults": {
51
+ "adapter_target": "comfyui",
52
+ "width": 1024,
53
+ "height": 1024,
54
+ "steps": 30,
55
+ "cfg": 6.5,
56
+ "sampler": "dpmpp_2m",
57
+ "seed_mode": "increment"
58
+ }
59
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "wave": "wave1",
3
+ "description": "Creature design — first wave. Subject IDs match this domain's lane id_patterns (concept_, ortho_, action_) so `sdlab generate` will route each candidate into the correct lane instead of default_lane.",
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": "concept_alpha",
18
+ "variations": 2,
19
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE YOUR CREATURE — initial concept, ideation exploration], painterly concept art, canvas grain"
20
+ },
21
+ {
22
+ "id": "ortho_alpha",
23
+ "variations": 2,
24
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE YOUR CREATURE — turnaround model sheet, orthographic views for modelers], painterly concept art, canvas grain"
25
+ },
26
+ {
27
+ "id": "action_alpha",
28
+ "variations": 2,
29
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE YOUR CREATURE — attack stance, locomotion study, movement key], painterly concept art, canvas grain"
30
+ }
31
+ ]
32
+ }
@@ -5,8 +5,10 @@
5
5
  "version": "0.1.0",
6
6
  "description": "Creature concept art — fantasy creatures, alien species, monsters, wildlife, and mythological beings.",
7
7
  "defaults": {
8
- "checkpoint": "",
9
- "loras": [],
8
+ "checkpoint": "dreamshaperXL_v21TurboDPMSDE.safetensors",
9
+ "loras": [
10
+ { "name": "classipeintxl_v21.safetensors", "weight": 1.0 }
11
+ ],
10
12
  "width": 1024,
11
13
  "height": 1024,
12
14
  "steps": 8,
@@ -7,6 +7,7 @@
7
7
  "edge_defaults": {},
8
8
  "null_faction_patterns": [],
9
9
  "id_fallbacks": {},
10
+ "faction_context": {},
10
11
  "training_profiles": [
11
12
  {
12
13
  "profile_id": "creature-style",
@@ -0,0 +1,61 @@
1
+ {
2
+ "workflow_id": "creature-portrait-set",
3
+ "label": "Creature Portrait Set",
4
+ "description": "Generate creature concept candidates exploring anatomy and silhouette.",
5
+ "lane_id": "concept",
6
+ "subject_mode": "required",
7
+ "output_mode": "portrait_set",
8
+ "output_count": 4,
9
+ "required_reference_roles": ["anchor"],
10
+ "preferred_reference_tags": ["concept", "approved"],
11
+ "prompt_strategy": {
12
+ "style_prefix": [
13
+ "creature concept art",
14
+ "strong anatomical read",
15
+ "distinctive silhouette"
16
+ ],
17
+ "structure": "style_prefix, subject_identity, lane_goal, canon_focus, controlled_variation",
18
+ "must_include": [
19
+ "species identity",
20
+ "anatomy logic",
21
+ "silhouette clarity"
22
+ ],
23
+ "optional_blocks": [
24
+ "scale reference note",
25
+ "locomotion note"
26
+ ]
27
+ },
28
+ "negative_strategy": {
29
+ "must_avoid": [
30
+ "human anatomy default",
31
+ "generic dragon",
32
+ "over-ornamentation",
33
+ "anatomical impossibility"
34
+ ],
35
+ "lane_specific_avoid": [
36
+ "environment focus",
37
+ "multiple creatures"
38
+ ],
39
+ "subject_specific_avoid": []
40
+ },
41
+ "canon_focus": [
42
+ "anatomy",
43
+ "silhouette",
44
+ "material_language",
45
+ "palette"
46
+ ],
47
+ "drift_guards": [
48
+ "preserve species anatomy",
49
+ "preserve silhouette proportions",
50
+ "preserve surface material language"
51
+ ],
52
+ "runtime_defaults": {
53
+ "adapter_target": "comfyui",
54
+ "width": 1024,
55
+ "height": 1024,
56
+ "steps": 30,
57
+ "cfg": 6.5,
58
+ "sampler": "dpmpp_2m",
59
+ "seed_mode": "increment"
60
+ }
61
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "workflow_id": "silhouette-exploration",
3
+ "label": "Silhouette Exploration",
4
+ "description": "Explore silhouette variations for a creature design.",
5
+ "lane_id": "concept",
6
+ "subject_mode": "optional",
7
+ "output_mode": "silhouette_sheet",
8
+ "output_count": 8,
9
+ "required_reference_roles": [],
10
+ "preferred_reference_tags": ["silhouette", "concept"],
11
+ "prompt_strategy": {
12
+ "style_prefix": [
13
+ "creature silhouette exploration",
14
+ "high contrast shape language",
15
+ "varied proportions and mass distribution"
16
+ ],
17
+ "structure": "style_prefix, lane_goal, canon_focus, controlled_variation",
18
+ "must_include": [
19
+ "silhouette variety",
20
+ "readable shape at small scale",
21
+ "consistent design family"
22
+ ],
23
+ "optional_blocks": [
24
+ "size class note",
25
+ "locomotion type note"
26
+ ]
27
+ },
28
+ "negative_strategy": {
29
+ "must_avoid": [
30
+ "uniform silhouettes",
31
+ "human proportions",
32
+ "over-detailed rendering"
33
+ ],
34
+ "lane_specific_avoid": [
35
+ "color distraction",
36
+ "background complexity"
37
+ ],
38
+ "subject_specific_avoid": []
39
+ },
40
+ "canon_focus": [
41
+ "silhouette",
42
+ "anatomy",
43
+ "scale_logic"
44
+ ],
45
+ "drift_guards": [
46
+ "shapes must remain readable at thumbnail scale",
47
+ "design family cohesion across variants"
48
+ ],
49
+ "runtime_defaults": {
50
+ "adapter_target": "comfyui",
51
+ "width": 1024,
52
+ "height": 1024,
53
+ "steps": 30,
54
+ "cfg": 6.5,
55
+ "sampler": "dpmpp_2m",
56
+ "seed_mode": "random"
57
+ }
58
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "wave": "wave1",
3
+ "description": "Game art — first wave. Subject IDs match this domain's lane id_patterns (char_, env_, prop_, ship_) so `sdlab generate` will route each candidate into the correct lane instead of default_lane.",
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": "char_hero",
18
+ "variations": 2,
19
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE YOUR CHARACTER — costume, faction identity, personal gear], painterly concept art, canvas grain"
20
+ },
21
+ {
22
+ "id": "env_town",
23
+ "variations": 2,
24
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE YOUR ENVIRONMENT — town, dungeon, overworld location], painterly concept art, canvas grain"
25
+ },
26
+ {
27
+ "id": "prop_key",
28
+ "variations": 2,
29
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE YOUR PROP — quest item, treasure, story-carrying object], painterly concept art, canvas grain"
30
+ },
31
+ {
32
+ "id": "ship_flagship",
33
+ "variations": 2,
34
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE YOUR SHIP OR VEHICLE — exterior view, faction silhouette], painterly concept art, canvas grain"
35
+ }
36
+ ]
37
+ }
@@ -4,8 +4,10 @@
4
4
  "domain": "game-art",
5
5
  "version": "0.1.0",
6
6
  "defaults": {
7
- "checkpoint": "",
8
- "loras": [],
7
+ "checkpoint": "dreamshaperXL_v21TurboDPMSDE.safetensors",
8
+ "loras": [
9
+ { "name": "classipeintxl_v21.safetensors", "weight": 1.0 }
10
+ ],
9
11
  "width": 1024,
10
12
  "height": 1024,
11
13
  "steps": 8,
@@ -0,0 +1,62 @@
1
+ {
2
+ "workflow_id": "character-portrait-set",
3
+ "label": "Character Portrait Set",
4
+ "description": "Generate a focused portrait candidate pack for a named character.",
5
+ "lane_id": "character",
6
+ "subject_mode": "required",
7
+ "output_mode": "portrait_set",
8
+ "output_count": 4,
9
+ "required_reference_roles": ["anchor"],
10
+ "preferred_reference_tags": ["portrait", "approved"],
11
+ "prompt_strategy": {
12
+ "style_prefix": [
13
+ "character portrait concept art",
14
+ "clean readable silhouette",
15
+ "consistent identity"
16
+ ],
17
+ "structure": "style_prefix, subject_identity, lane_goal, canon_focus, controlled_variation",
18
+ "must_include": [
19
+ "subject identity",
20
+ "costume logic",
21
+ "palette fidelity"
22
+ ],
23
+ "optional_blocks": [
24
+ "lighting note",
25
+ "gesture note"
26
+ ]
27
+ },
28
+ "negative_strategy": {
29
+ "must_avoid": [
30
+ "off-model face",
31
+ "extra accessories",
32
+ "ornamental drift",
33
+ "generic fantasy styling"
34
+ ],
35
+ "lane_specific_avoid": [
36
+ "cropped silhouette",
37
+ "muddy facial read"
38
+ ],
39
+ "subject_specific_avoid": []
40
+ },
41
+ "canon_focus": [
42
+ "silhouette",
43
+ "costume_logic",
44
+ "palette",
45
+ "faction_read",
46
+ "gesture"
47
+ ],
48
+ "drift_guards": [
49
+ "preserve face structure",
50
+ "preserve canonical materials",
51
+ "do not add non-canon ornament"
52
+ ],
53
+ "runtime_defaults": {
54
+ "adapter_target": "comfyui",
55
+ "width": 1024,
56
+ "height": 1024,
57
+ "steps": 30,
58
+ "cfg": 6.5,
59
+ "sampler": "dpmpp_2m",
60
+ "seed_mode": "increment"
61
+ }
62
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "workflow_id": "environment-moodboard",
3
+ "label": "Environment Moodboard",
4
+ "description": "Explore environment palette, lighting, and spatial mood.",
5
+ "lane_id": "environment",
6
+ "subject_mode": "optional",
7
+ "output_mode": "moodboard",
8
+ "output_count": 6,
9
+ "required_reference_roles": [],
10
+ "preferred_reference_tags": ["environment", "approved"],
11
+ "prompt_strategy": {
12
+ "style_prefix": [
13
+ "environment concept art moodboard",
14
+ "painterly atmospheric rendering",
15
+ "strong spatial depth"
16
+ ],
17
+ "structure": "style_prefix, lane_goal, canon_focus, controlled_variation",
18
+ "must_include": [
19
+ "spatial composition",
20
+ "palette adherence",
21
+ "lighting mood"
22
+ ],
23
+ "optional_blocks": [
24
+ "time of day note",
25
+ "weather note"
26
+ ]
27
+ },
28
+ "negative_strategy": {
29
+ "must_avoid": [
30
+ "random architecture style shifts",
31
+ "off-era props",
32
+ "wrong lighting mood",
33
+ "clean sterile surfaces"
34
+ ],
35
+ "lane_specific_avoid": [
36
+ "character focus competing with environment"
37
+ ],
38
+ "subject_specific_avoid": []
39
+ },
40
+ "canon_focus": [
41
+ "palette",
42
+ "material_language",
43
+ "lighting",
44
+ "scale_logic",
45
+ "era_logic"
46
+ ],
47
+ "drift_guards": [
48
+ "palette must stay within project range",
49
+ "architecture style must match era logic",
50
+ "no modern or off-era props"
51
+ ],
52
+ "runtime_defaults": {
53
+ "adapter_target": "comfyui",
54
+ "width": 1024,
55
+ "height": 1024,
56
+ "steps": 30,
57
+ "cfg": 6.5,
58
+ "sampler": "dpmpp_2m",
59
+ "seed_mode": "random"
60
+ }
61
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "wave": "wave1",
3
+ "description": "Vehicle / mech — first wave. Subject IDs match this domain's lane id_patterns (ext_, cockpit_, component_, schematic_) so `sdlab generate` will route each candidate into the correct lane instead of default_lane.",
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": "ext_flagship",
18
+ "variations": 2,
19
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE YOUR VEHICLE — hull design, body panels, overall form language], painterly concept art, canvas grain"
20
+ },
21
+ {
22
+ "id": "cockpit_flagship",
23
+ "variations": 2,
24
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE YOUR COCKPIT — bridge layout, cabin instruments, pilot seating], painterly concept art, canvas grain"
25
+ },
26
+ {
27
+ "id": "component_engine",
28
+ "variations": 2,
29
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE A COMPONENT — engine, weapon, thruster, subsystem detail], painterly concept art, canvas grain"
30
+ },
31
+ {
32
+ "id": "schematic_overview",
33
+ "variations": 2,
34
+ "prompt": "oil painting, visible brushstrokes, [DESCRIBE YOUR SCHEMATIC — technical diagram, orthographic breakdown, cross-section], painterly concept art, canvas grain"
35
+ }
36
+ ]
37
+ }
@@ -4,8 +4,10 @@
4
4
  "domain": "vehicle-mech",
5
5
  "version": "0.1.0",
6
6
  "defaults": {
7
- "checkpoint": "",
8
- "loras": [],
7
+ "checkpoint": "dreamshaperXL_v21TurboDPMSDE.safetensors",
8
+ "loras": [
9
+ { "name": "classipeintxl_v21.safetensors", "weight": 1.0 }
10
+ ],
9
11
  "width": 1024,
10
12
  "height": 1024,
11
13
  "steps": 8,