@devinilabs/reelstack 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.
Files changed (145) hide show
  1. package/LICENSE +128 -0
  2. package/README.md +125 -0
  3. package/cli/beats.js +124 -0
  4. package/cli/bootstrap.js +124 -0
  5. package/cli/capture.js +34 -0
  6. package/cli/direction.js +114 -0
  7. package/cli/icons.js +49 -0
  8. package/cli/index.js +101 -0
  9. package/cli/init.js +253 -0
  10. package/cli/license.js +168 -0
  11. package/cli/lint.js +865 -0
  12. package/cli/preview.js +59 -0
  13. package/cli/render.js +404 -0
  14. package/cli/scaffold.js +239 -0
  15. package/cli/smoke.js +76 -0
  16. package/cli/update.js +26 -0
  17. package/cli/utils.js +184 -0
  18. package/docs/buyers-guide.md +220 -0
  19. package/docs/design-discipline.md +130 -0
  20. package/docs/family-galleries/dark.md +95 -0
  21. package/docs/family-galleries/forbidden.md +78 -0
  22. package/docs/family-galleries/glass.md +98 -0
  23. package/docs/family-galleries/paper.md +82 -0
  24. package/docs/family-galleries/warm.md +86 -0
  25. package/docs/superpowers/plans/2026-05-09-reelstack-init-readiness-gate.md +1166 -0
  26. package/docs/superpowers/specs/2026-05-09-reelstack-init-readiness-gate-design.md +233 -0
  27. package/families/dark/components/DriftingSpotlights.tsx +59 -0
  28. package/families/dark/components/FilmGrain.tsx +44 -0
  29. package/families/dark/components/ForestCard.tsx +43 -0
  30. package/families/dark/components/GridBackground.tsx +29 -0
  31. package/families/dark/components/RadialVignette.tsx +21 -0
  32. package/families/dark/components/Scanlines.tsx +35 -0
  33. package/families/dark/components/SegmentOpacity.ts +37 -0
  34. package/families/dark/components/index.ts +13 -0
  35. package/families/dark/index.ts +31 -0
  36. package/families/dark/palette.ts +98 -0
  37. package/families/dark/presets/claudedispatch.ts +46 -0
  38. package/families/dark/presets/codedrop.ts +37 -0
  39. package/families/dark/presets/gpt55.ts +54 -0
  40. package/families/dark/presets/notebooklm.ts +50 -0
  41. package/families/dark/presets/resourcescta.ts +35 -0
  42. package/families/dark/presets/skills.ts +40 -0
  43. package/families/dark/presets/stitch.ts +46 -0
  44. package/families/dark/presets/stitch2.ts +43 -0
  45. package/families/dark/typography.ts +16 -0
  46. package/families/forbidden/components/ForbiddenCausticBlobs.tsx +52 -0
  47. package/families/forbidden/components/NewsprintTexture.tsx +28 -0
  48. package/families/forbidden/components/TintedShadow.tsx +36 -0
  49. package/families/forbidden/components/index.ts +38 -0
  50. package/families/forbidden/index.ts +17 -0
  51. package/families/forbidden/palette.ts +88 -0
  52. package/families/forbidden/presets/heretic.ts +44 -0
  53. package/families/forbidden/typography.ts +18 -0
  54. package/families/glass/components/BreakdownCard.tsx +158 -0
  55. package/families/glass/components/CausticBlobs.tsx +49 -0
  56. package/families/glass/components/Counter.tsx +72 -0
  57. package/families/glass/components/EyebrowPill.tsx +59 -0
  58. package/families/glass/components/FilmStrip.tsx +202 -0
  59. package/families/glass/components/FloatingGlyphs.tsx +78 -0
  60. package/families/glass/components/GlassCard.tsx +58 -0
  61. package/families/glass/components/GlassCardBezel.tsx +45 -0
  62. package/families/glass/components/HairlineGrid.tsx +30 -0
  63. package/families/glass/components/IridescentRing.tsx +114 -0
  64. package/families/glass/components/IridescentText.tsx +98 -0
  65. package/families/glass/components/LightBeam.tsx +46 -0
  66. package/families/glass/components/ParticleBurst.tsx +62 -0
  67. package/families/glass/components/SonarRings.tsx +81 -0
  68. package/families/glass/components/StaggeredWords.tsx +74 -0
  69. package/families/glass/components/index.ts +20 -0
  70. package/families/glass/index.ts +31 -0
  71. package/families/glass/palette.ts +93 -0
  72. package/families/glass/presets/claudewatch.ts +64 -0
  73. package/families/glass/presets/claudewatchcta.ts +43 -0
  74. package/families/glass/presets/graphify.ts +45 -0
  75. package/families/glass/presets/gstack.ts +48 -0
  76. package/families/glass/presets/jcode.ts +50 -0
  77. package/families/glass/presets/lilagents.ts +52 -0
  78. package/families/glass/presets/paperclip.ts +43 -0
  79. package/families/glass/typography.ts +15 -0
  80. package/families/index.ts +49 -0
  81. package/families/paper/components/CardSpring.tsx +42 -0
  82. package/families/paper/components/CreamGrid.tsx +26 -0
  83. package/families/paper/components/EditorialSerifText.tsx +51 -0
  84. package/families/paper/components/GreenAccentCard.tsx +10 -0
  85. package/families/paper/components/PaperShadow.tsx +30 -0
  86. package/families/paper/components/ScaleBlurText.tsx +40 -0
  87. package/families/paper/components/index.ts +11 -0
  88. package/families/paper/index.ts +23 -0
  89. package/families/paper/palette.ts +102 -0
  90. package/families/paper/presets/designreel.ts +32 -0
  91. package/families/paper/presets/devini3d.ts +45 -0
  92. package/families/paper/presets/justdrop.ts +39 -0
  93. package/families/paper/presets/opus.ts +48 -0
  94. package/families/paper/typography.ts +17 -0
  95. package/families/warm/components/AccentGlow.tsx +60 -0
  96. package/families/warm/components/BentoCell.tsx +56 -0
  97. package/families/warm/components/BentoGrid.tsx +30 -0
  98. package/families/warm/components/FilmGrain.tsx +36 -0
  99. package/families/warm/components/ScaleBlurCounter.tsx +71 -0
  100. package/families/warm/components/WarmSurface.tsx +35 -0
  101. package/families/warm/components/index.ts +11 -0
  102. package/families/warm/index.ts +19 -0
  103. package/families/warm/palette.ts +81 -0
  104. package/families/warm/presets/huashu.ts +49 -0
  105. package/families/warm/presets/mempalace.ts +51 -0
  106. package/families/warm/typography.ts +17 -0
  107. package/package.json +85 -0
  108. package/reference/dark/claudedispatch.tsx +2441 -0
  109. package/reference/dark/notebooklm.tsx +2316 -0
  110. package/reference/dark/stitch.tsx +3040 -0
  111. package/reference/forbidden/heretic.tsx +2636 -0
  112. package/reference/glass/claudewatch.tsx +3827 -0
  113. package/reference/glass/graphify.tsx +2418 -0
  114. package/reference/glass/paperclip.tsx +2218 -0
  115. package/reference/paper/designreel.tsx +883 -0
  116. package/reference/paper/justdrop.tsx +1898 -0
  117. package/reference/paper/opus.tsx +1770 -0
  118. package/reference/warm/huashu.tsx +3413 -0
  119. package/reference/warm/mempalace.tsx +2909 -0
  120. package/skill/SKILL.md +229 -0
  121. package/skill/commands/reelstack-beats.md +20 -0
  122. package/skill/commands/reelstack-capture.md +24 -0
  123. package/skill/commands/reelstack-critique.md +15 -0
  124. package/skill/commands/reelstack-dark.md +40 -0
  125. package/skill/commands/reelstack-direction.md +17 -0
  126. package/skill/commands/reelstack-forbidden.md +25 -0
  127. package/skill/commands/reelstack-glass.md +39 -0
  128. package/skill/commands/reelstack-icons.md +22 -0
  129. package/skill/commands/reelstack-init.md +17 -0
  130. package/skill/commands/reelstack-lint.md +22 -0
  131. package/skill/commands/reelstack-paper.md +36 -0
  132. package/skill/commands/reelstack-render.md +20 -0
  133. package/skill/commands/reelstack-warm.md +36 -0
  134. package/templates/dark/template.tsx +115 -0
  135. package/templates/forbidden/template.tsx +111 -0
  136. package/templates/glass/template.tsx +201 -0
  137. package/templates/paper/template.tsx +133 -0
  138. package/templates/warm/template.tsx +210 -0
  139. package/utils/ai-purple-blocklist.ts +13 -0
  140. package/utils/banned-fonts.ts +11 -0
  141. package/utils/cubic-bezier.ts +36 -0
  142. package/utils/easing.ts +84 -0
  143. package/utils/grid.ts +13 -0
  144. package/utils/render-presets.json +56 -0
  145. package/utils/safe-zones.tsx +57 -0
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Warm Signature — family index.
3
+ */
4
+ export { palette, safeZones, ALLOWED_ACCENTS } from "./palette";
5
+ export type { WarmPalette } from "./palette";
6
+
7
+ import { preset as huashu } from "./presets/huashu";
8
+ import { preset as mempalace } from "./presets/mempalace";
9
+
10
+ export const presets = {
11
+ huashu,
12
+ mempalace,
13
+ } as const;
14
+
15
+ export const family = {
16
+ name: "warm",
17
+ label: "Warm Signature",
18
+ presets: Object.keys(presets) as Array<keyof typeof presets>,
19
+ } as const;
@@ -0,0 +1,81 @@
1
+ /**
2
+ * ReelStack — Warm Signature palette
3
+ *
4
+ * Verified against /Users/abhishekraj/my-video/src/HuashuReel.tsx.
5
+ *
6
+ * Mood: confident product launch.
7
+ *
8
+ * STRICT RULE: exactly ONE primary accent (amber), ONE payoff (emerald),
9
+ * ONE negative (red). No other hues. No blues. No purples. No pinks.
10
+ * The lint command enforces this — any new accent in a Warm Signature reel
11
+ * is flagged.
12
+ */
13
+ export const palette = {
14
+ // Backgrounds — warm zinc base
15
+ bg: "#09090b",
16
+ bgLift: "#111114",
17
+ surface: "#15151c",
18
+ surfaceWarm: "#1a1610", // the family's signature warm surface
19
+
20
+ // Foreground (text on dark)
21
+ fg: "#fafafa", // contrast 19.6:1 on bg #09090b — WCAG AAA
22
+ fgSoft: "#d4d4d8", // contrast 13.9:1 on bg #09090b — WCAG AAA
23
+ fgMuted: "#9f9fa9", // contrast 7.7:1 on bg #09090b — WCAG AAA
24
+ fgDim: "#71717b", // contrast 4.2:1 on bg #09090b — WCAG AA
25
+
26
+ // The one accent (amber signature)
27
+ amber: "#f99c00",
28
+ amberSoft: "#fcbb00",
29
+ amberDeep: "#9a5e00",
30
+ amberGlow: "rgba(249, 156, 0, 0.20)",
31
+
32
+ // Payoff (emerald — used for success / launch / "ship" moments only)
33
+ emerald: "#00d294",
34
+ emeraldSoft: "#5ee9b5",
35
+ emeraldDeep: "#00875a",
36
+
37
+ // Negative (red — used for "wall hit" / "limit" / "blocked" moments only)
38
+ red: "#ef4444",
39
+ redSoft: "#fca5a5",
40
+ redDeep: "#7f1d1d",
41
+
42
+ // Claude warm (for terracotta tie-in when product is Claude-adjacent)
43
+ claudeWarm: "#d4663a",
44
+ } as const;
45
+
46
+ export const safeZones = {
47
+ top: 290,
48
+ bottom: 1500,
49
+ canvas: { width: 1080, height: 1920 },
50
+ } as const;
51
+
52
+ /**
53
+ * Hard-coded "allowed accents" list. The lint command checks every fill /
54
+ * stroke / background color in a Warm Signature reel against this set.
55
+ */
56
+ export const ALLOWED_ACCENTS = [
57
+ palette.amber,
58
+ palette.amberSoft,
59
+ palette.amberDeep,
60
+ palette.emerald,
61
+ palette.emeraldSoft,
62
+ palette.emeraldDeep,
63
+ palette.red,
64
+ palette.redSoft,
65
+ palette.redDeep,
66
+ palette.claudeWarm,
67
+ ] as const;
68
+
69
+ export type WarmPalette = typeof palette;
70
+
71
+ /** Re-export grid units so consumers can pull them from the family entrypoint. */
72
+ export {
73
+ GRID,
74
+ GRID_2,
75
+ GRID_4,
76
+ GRID_6,
77
+ GRID_8,
78
+ GRID_12,
79
+ GRID_16,
80
+ GRID_24,
81
+ } from "../../utils/grid";
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Preset: huashu (Warm Signature)
3
+ * Source: HuashuReel.tsx
4
+ *
5
+ * The reference build for Warm Signature. Strict single-accent rule: amber
6
+ * primary, emerald payoff, red wall. Bento grids for feature matrices.
7
+ */
8
+ export const preset = {
9
+ name: "huashu",
10
+ family: "warm",
11
+ source: "HuashuReel",
12
+ durationFrames: 2984,
13
+ fps: 30,
14
+ copy: {
15
+ hook: "Never hit Claude Design limits again.",
16
+ sub: "Huashu just dropped on GitHub. Drops into ANY agent.",
17
+ cta: "Free, MIT, install in 30 seconds.",
18
+ },
19
+ accents: {},
20
+ beats: {
21
+ hook: 0,
22
+ nameDrop: 150,
23
+ dropsInto: 330,
24
+ install: 600,
25
+ capabilities: 810,
26
+ underHood: 990,
27
+ variants: 1320,
28
+ payoff: 1680,
29
+ guiVsTerminal: 2040,
30
+ license: 2400,
31
+ cta: 2700,
32
+ end: 2954,
33
+ },
34
+ primitives: [
35
+ "BentoGrid",
36
+ "AccentGlow",
37
+ "ScaleBlurCounter",
38
+ "FilmGrain",
39
+ "WarmSurface",
40
+ "OffthreadVideoLetterbox", // for embedded claude-design.mov clip
41
+ ],
42
+ embeddedClip: {
43
+ path: "captures/huashu/claude-design.mov",
44
+ sequenceStart: 990,
45
+ durationFrames: 330, // 11s under-hood clip
46
+ },
47
+ notes:
48
+ "The single-accent rule is the family contract — amber + emerald + red only. No blues, no purples, no pinks. The lint command flags any other accent.",
49
+ } as const;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Preset: mempalace (Warm Signature — Parchment variant)
3
+ * Source: MemPalaceReel.tsx
4
+ *
5
+ * Aristotelian memory palace narrative. Dark zinc base + warm parchment
6
+ * gold + emerald success accent. Sits in Warm Signature because the warm
7
+ * accent (gold/parchment) drives the feel, even though parchment is paper-
8
+ * tinted rather than amber-tinted.
9
+ */
10
+ export const preset = {
11
+ name: "mempalace",
12
+ family: "warm",
13
+ source: "MemPalaceReel",
14
+ durationFrames: 2520,
15
+ fps: 30,
16
+ copy: {
17
+ hook: "Gone. Mem0 decides for you.",
18
+ sub: "Until MemPalace — AI memory palace. Aristotle's method.",
19
+ cta: "Open source, free.",
20
+ },
21
+ accents: {
22
+ paper: "#efe7d6",
23
+ gold: "#b8893d",
24
+ goldGlow: "rgba(184, 137, 61, 0.22)",
25
+ emerald: "#00d294",
26
+ indigo: "#625fff",
27
+ red: "#ef4444",
28
+ },
29
+ beats: {
30
+ gone: 0,
31
+ mem0: 225,
32
+ until: 555,
33
+ palace: 780,
34
+ aristotle: 915,
35
+ rooms: 1395,
36
+ drawers: 1815,
37
+ wings: 2205,
38
+ cta: 2400,
39
+ end: 2520,
40
+ },
41
+ primitives: [
42
+ "AccentGlow",
43
+ "ScaleBlurCounter",
44
+ "FilmGrain",
45
+ "WarmSurface",
46
+ "ParchmentTexture", // preset-specific — paper texture overlay
47
+ "PalaceRoom", // preset-specific — memory palace architecture
48
+ ],
49
+ notes:
50
+ "Parchment palette (paper #efe7d6, gold #b8893d) is the family's only allowed deviation from amber/emerald/red. Use it to evoke the Aristotelian palace mood. The single-accent rule still applies: gold is the primary, emerald is payoff, red is wall.",
51
+ } as const;
@@ -0,0 +1,17 @@
1
+ /** Warm Signature typography scale. Geist Sans + Geist Mono only.
2
+ * Larger amber-driven scale — the family's hero name reveal goes giant (168 px).
3
+ * Pulled from existing template usage (HuashuReel hero ≈ 168, h1 90, body 32);
4
+ * locks the implicit scale into named tokens. Text colors come from palette
5
+ * (fg / fgSoft / fgMuted / amber) — never embed colors in typography tokens.
6
+ */
7
+ export const typography = {
8
+ hero: { fontSize: 168, fontWeight: 800, letterSpacing: -4, lineHeight: 0.95, fontFamily: "Geist, system-ui" },
9
+ h1: { fontSize: 90, fontWeight: 700, letterSpacing: -2, lineHeight: 1.05, fontFamily: "Geist, system-ui" },
10
+ h2: { fontSize: 48, fontWeight: 700, letterSpacing: -1.2, lineHeight: 1.15, fontFamily: "Geist, system-ui" },
11
+ h3: { fontSize: 36, fontWeight: 600, letterSpacing: -1, lineHeight: 1.2, fontFamily: "Geist, system-ui" },
12
+ body: { fontSize: 32, fontWeight: 500, letterSpacing: -0.3, lineHeight: 1.45, fontFamily: "Geist, system-ui" },
13
+ caption: { fontSize: 22, fontWeight: 500, letterSpacing: 0.5, lineHeight: 1.4, fontFamily: "Geist, system-ui", textTransform: "uppercase" as const },
14
+ mono: { fontSize: 26, fontWeight: 500, letterSpacing: 0.3, lineHeight: 1.4, fontFamily: "Geist Mono, monospace" },
15
+ counter: { fontSize: 168, fontWeight: 800, letterSpacing: -4, lineHeight: 1, fontFamily: "Geist Mono, monospace" },
16
+ } as const;
17
+ export type Typography = typeof typography;
package/package.json ADDED
@@ -0,0 +1,85 @@
1
+ {
2
+ "name": "@devinilabs/reelstack",
3
+ "version": "1.2.0",
4
+ "description": "Premium 9:16 Reel OS for Remotion. 5 cinematic style families, 22 production-tested presets, audio-locked motion, IG-safe by default. v1.1+ bakes in leonxlnx/taste-skill design discipline + huashu-design productivity patterns.",
5
+ "keywords": [
6
+ "remotion",
7
+ "reels",
8
+ "9-16",
9
+ "instagram",
10
+ "tiktok",
11
+ "shorts",
12
+ "video",
13
+ "templates",
14
+ "claude-code-skill",
15
+ "agent-skill",
16
+ "taste-skill",
17
+ "huashu-pattern",
18
+ "design-discipline"
19
+ ],
20
+ "author": "Devini Labs <devinilabs@gmail.com>",
21
+ "license": "SEE LICENSE IN LICENSE",
22
+ "homepage": "https://reelstack.dev",
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "https://github.com/devinilabs/reelstack.git"
26
+ },
27
+ "bugs": {
28
+ "url": "https://github.com/devinilabs/reelstack/issues"
29
+ },
30
+ "main": "cli/index.js",
31
+ "bin": {
32
+ "reelstack": "cli/index.js"
33
+ },
34
+ "exports": {
35
+ ".": "./cli/index.js",
36
+ "./families/glass": "./families/glass/index.ts",
37
+ "./families/glass/components": "./families/glass/components/index.ts",
38
+ "./families/glass/typography": "./families/glass/typography.ts",
39
+ "./families/paper": "./families/paper/index.ts",
40
+ "./families/paper/components": "./families/paper/components/index.ts",
41
+ "./families/paper/typography": "./families/paper/typography.ts",
42
+ "./families/dark": "./families/dark/index.ts",
43
+ "./families/dark/components": "./families/dark/components/index.ts",
44
+ "./families/dark/typography": "./families/dark/typography.ts",
45
+ "./families/warm": "./families/warm/index.ts",
46
+ "./families/warm/components": "./families/warm/components/index.ts",
47
+ "./families/warm/typography": "./families/warm/typography.ts",
48
+ "./families/forbidden": "./families/forbidden/index.ts",
49
+ "./families/forbidden/components": "./families/forbidden/components/index.ts",
50
+ "./families/forbidden/typography": "./families/forbidden/typography.ts",
51
+ "./utils/easing": "./utils/easing.ts",
52
+ "./utils/safe-zones": "./utils/safe-zones.tsx",
53
+ "./utils/grid": "./utils/grid.ts",
54
+ "./utils/banned-fonts": "./utils/banned-fonts.ts",
55
+ "./utils/ai-purple-blocklist": "./utils/ai-purple-blocklist.ts",
56
+ "./utils/cubic-bezier": "./utils/cubic-bezier.ts",
57
+ "./render-presets.json": "./utils/render-presets.json"
58
+ },
59
+ "files": [
60
+ "cli/",
61
+ "skill/",
62
+ "families/",
63
+ "templates/",
64
+ "utils/",
65
+ "docs/",
66
+ "reference/",
67
+ "README.md",
68
+ "LICENSE"
69
+ ],
70
+ "engines": {
71
+ "node": ">=20"
72
+ },
73
+ "peerDependencies": {
74
+ "remotion": "^4.0.0"
75
+ },
76
+ "scripts": {
77
+ "test": "node --test test/*.test.js",
78
+ "lint": "echo 'no lint configured yet'",
79
+ "prepack": "node scripts/strip-dev-override.js",
80
+ "postpack": "node scripts/restore-dev-override.js"
81
+ },
82
+ "publishConfig": {
83
+ "access": "public"
84
+ }
85
+ }