@slatesvideo/shared 0.5.4 → 0.5.6

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 (42) hide show
  1. package/README.md +13 -0
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.js +2 -2
  4. package/dist/operations/index.d.ts +84 -9
  5. package/dist/operations/index.js +455 -47
  6. package/dist/prompts/character-sheet.d.ts +11 -21
  7. package/dist/prompts/character-sheet.js +124 -59
  8. package/dist/prompts/model-facts.d.ts +1 -1
  9. package/dist/prompts/model-facts.js +32 -0
  10. package/dist/prompts/partials.generated.js +2 -2
  11. package/dist/prompts/prompting-tips.d.ts +1 -1
  12. package/dist/prompts/prompting-tips.js +196 -2
  13. package/dist/prompts/reference-composer.d.ts +1 -1
  14. package/dist/prompts/reference-composer.js +3 -4
  15. package/dist/prompts/reference-rules.d.ts +19 -2
  16. package/dist/prompts/reference-rules.js +21 -4
  17. package/dist/skills/content.js +14 -11
  18. package/exports/slates-prompt-builder/generated/SKILL.md +59 -0
  19. package/{skills/slates-character-turnaround.md → exports/slates-prompt-builder/generated/reference-character.md} +26 -33
  20. package/exports/slates-prompt-builder/generated/reference-content-policy.md +75 -0
  21. package/exports/slates-prompt-builder/generated/reference-kling.md +212 -0
  22. package/exports/slates-prompt-builder/generated/reference-nano-banana.md +182 -0
  23. package/exports/slates-prompt-builder/generated/reference-seedance.md +353 -0
  24. package/exports/slates-prompt-builder/generated/slates-prompt-builder-manifest.json +79 -0
  25. package/exports/slates-prompt-builder/generated/slates-prompt-builder.skill +0 -0
  26. package/package.json +7 -3
  27. package/skills/_partials/reference-rules-core.md +1 -1
  28. package/skills/_partials/reference-tips-short.md +1 -1
  29. package/skills/slates-character-identity.md +105 -0
  30. package/skills/slates-edit-and-iterate.md +1 -1
  31. package/skills/slates-model-selection.md +26 -0
  32. package/skills/slates-one-prompt-film.md +3 -3
  33. package/skills/slates-prompting-elevenlabs.md +131 -0
  34. package/skills/slates-prompting-flux-2-max.md +1 -1
  35. package/skills/slates-prompting-gpt-image-2.md +1 -1
  36. package/skills/slates-prompting-kling-v3.md +8 -6
  37. package/skills/slates-prompting-nano-banana-2.md +7 -5
  38. package/skills/slates-prompting-omni-flash.md +1 -1
  39. package/skills/slates-prompting-seed-audio.md +110 -0
  40. package/skills/slates-prompting-seedance.md +15 -9
  41. package/skills/slates-prompting-suno.md +110 -0
  42. package/skills/slates-prompting-veo-3.md +1 -1
@@ -20,8 +20,25 @@ export declare const IDENTITY_LIGHTING = "flat, even, shadowless lighting";
20
20
  * crushes hair and wardrobe silhouettes.** A deep neutral grey holds both.
21
21
  */
22
22
  export declare const IDENTITY_PLATE_HEX = "#3a3a3c";
23
- export declare const IDENTITY_BACKGROUND = "a plain, deep neutral-grey background (#3a3a3c)";
24
- export declare const IDENTITY_LIGHTING_CLAUSE = "Render on a plain, deep neutral-grey background (#3a3a3c) with flat, even, shadowless lighting so the sheet captures the character's identity, not scene lighting.";
23
+ /**
24
+ * 🚨 THE HEX IS EMITTED WITHOUT ITS `#` AND THAT IS LOAD-BEARING (2026-07-30).
25
+ *
26
+ * `#` is a REFERENCE-TOKEN SIGIL in the desktop's prompt composer
27
+ * (`slate/src/shared/promptComposition.ts` — `/([@#])([\w-]+)/g`), and an
28
+ * unresolved `#token` is SILENTLY DELETED. So `#3a3a3c` never survived to any
29
+ * model: fal echoed back `deep neutral-grey background ()` on a real 2026-07-30
30
+ * request. The plate value has been doing nothing since the composer shipped.
31
+ *
32
+ * Writing it bare keeps the value in the prompt. `IDENTITY_PLATE_HEX` keeps its
33
+ * `#` because it is a colour constant and may have non-prompt consumers.
34
+ *
35
+ * GENERAL RULE FOR THIS FILE: never emit `#` or `@` into prompt text. Both are
36
+ * sigils downstream and both mangle silently — no error, no log, just missing
37
+ * words. HOW YOU'D KNOW THIS IS BEATEN: the composer stops treating bare
38
+ * `#hex` as a token, or starts leaving unresolved tokens intact.
39
+ */
40
+ export declare const IDENTITY_BACKGROUND: string;
41
+ export declare const IDENTITY_LIGHTING_CLAUSE: string;
25
42
  /**
26
43
  * Craft clauses every identity reference wants — the eye and skin detail that
27
44
  * survives downstream, plus the two "reads literally" guards. Crushed-black
@@ -30,9 +30,9 @@ export const REFERENCE_RULES = [
30
30
  },
31
31
  {
32
32
  id: 'identity-name-as-one-entity',
33
- title: 'One identity sheet per character — NAME whatever you attach as one entity',
34
- rule: 'Attach the character\'s single identity sheet (dominant portrait + body panels) rather than a pile of views — fewer competing renderings of a face is always better, because the model cannot tell which is authoritative and averages them. When a character DOES carry a second bound sheet (an explicit expression range, or a legacy turnaround+expression pair), NAME both inline as the SAME subject ("Marcus (images 1 and 2)") — that shared name is what tells the model they are ONE person. Do NOT inject a role essay ("use for identity, ignore the outfit/lighting, render neutral"): the user\'s prompt owns wardrobe, expression, and lighting.',
35
- why: 'Naming both images as one entity IS each model\'s OWN official consistency lever — NB2 "assign a distinct name to each character/object"; Seedance "Reference <Subject_N> in <Image_N>"; Kling "reuse a fixed label verbatim". The old heavy role-essay was the OFF-doctrine part: telling the model to "use for identity" while injecting "ignore the outfit" dragged the studio-lit sheet\'s wardrobe + lighting into scenes that explicitly wanted otherwise (the movie-still injection failure). The close-ups still carry far more facial signal (eyes, skin, teeth, bone structure) than a turnaround\'s postage-stamp faces, so attach both — the NAME, not an instruction, is what makes many refs work. The trend is MORE references (video/audio/3D into Seedance-class models), all addressed by name.',
33
+ title: 'One identity sheet per character, named inline',
34
+ rule: 'Attach the character\'s single identity sheet (dominant portrait + body panels) rather than a pile of views — fewer competing renderings of a face is better, because the model cannot tell which is authoritative and averages them. Cite it inline as the subject ("Marcus (image 1)"). Do not inject a role essay ("use for identity, ignore the outfit/lighting, render neutral"): the user\'s prompt owns wardrobe, expression, and lighting.',
35
+ why: 'Distinct inline naming is each model\'s own consistency lever — NB2 "assign a distinct name to each character/object"; Seedance "Reference <Subject_N> in <Image_N>"; Kling "reuse a fixed label verbatim". One canonical identity image removes same-role competition before it starts.',
36
36
  grade: 'Eric-test',
37
37
  },
38
38
  {
@@ -96,7 +96,24 @@ export const IDENTITY_LIGHTING = 'flat, even, shadowless lighting';
96
96
  * crushes hair and wardrobe silhouettes.** A deep neutral grey holds both.
97
97
  */
98
98
  export const IDENTITY_PLATE_HEX = '#3a3a3c';
99
- export const IDENTITY_BACKGROUND = `a plain, deep neutral-grey background (${IDENTITY_PLATE_HEX})`;
99
+ /**
100
+ * 🚨 THE HEX IS EMITTED WITHOUT ITS `#` AND THAT IS LOAD-BEARING (2026-07-30).
101
+ *
102
+ * `#` is a REFERENCE-TOKEN SIGIL in the desktop's prompt composer
103
+ * (`slate/src/shared/promptComposition.ts` — `/([@#])([\w-]+)/g`), and an
104
+ * unresolved `#token` is SILENTLY DELETED. So `#3a3a3c` never survived to any
105
+ * model: fal echoed back `deep neutral-grey background ()` on a real 2026-07-30
106
+ * request. The plate value has been doing nothing since the composer shipped.
107
+ *
108
+ * Writing it bare keeps the value in the prompt. `IDENTITY_PLATE_HEX` keeps its
109
+ * `#` because it is a colour constant and may have non-prompt consumers.
110
+ *
111
+ * GENERAL RULE FOR THIS FILE: never emit `#` or `@` into prompt text. Both are
112
+ * sigils downstream and both mangle silently — no error, no log, just missing
113
+ * words. HOW YOU'D KNOW THIS IS BEATEN: the composer stops treating bare
114
+ * `#hex` as a token, or starts leaving unresolved tokens intact.
115
+ */
116
+ export const IDENTITY_BACKGROUND = `a plain, deep neutral-grey background (hex ${IDENTITY_PLATE_HEX.replace('#', '')})`;
100
117
  export const IDENTITY_LIGHTING_CLAUSE = `Render on ${IDENTITY_BACKGROUND} with ${IDENTITY_LIGHTING} so the sheet captures the character's identity, not scene lighting.`;
101
118
  /**
102
119
  * Craft clauses every identity reference wants — the eye and skin detail that