@anvpx/motion 0.0.0-stage → 0.1.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 (225) hide show
  1. package/CATALOG.md +301 -0
  2. package/LICENSE +21 -0
  3. package/README.md +93 -2
  4. package/assets.json +37 -0
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.js +1 -0
  7. package/dist/main.d.ts +2 -0
  8. package/dist/main.js +46 -0
  9. package/icons/LICENSE-lucide +43 -0
  10. package/icons/icons.json +2711 -0
  11. package/icons/licences.json +1521 -0
  12. package/luts/LICENSE-CC0.txt +20 -0
  13. package/luts/cool.cube +520 -0
  14. package/luts/noir.cube +520 -0
  15. package/luts/warm.cube +520 -0
  16. package/music/LICENSE-CC0.txt +32 -0
  17. package/music/bed-full.wav +0 -0
  18. package/music/bed.wav +0 -0
  19. package/package.json +69 -3
  20. package/packs/INDEX.md +22 -0
  21. package/packs/painted/checklist.md +30 -0
  22. package/packs/painted/examples/dry-ink/storyboard.json +88 -0
  23. package/packs/painted/examples/oil/storyboard.json +89 -0
  24. package/packs/painted/examples/shape-carry/storyboard.json +112 -0
  25. package/packs/painted/examples/stacked-beat/storyboard.json +106 -0
  26. package/packs/painted/examples/staged-read/storyboard.json +105 -0
  27. package/packs/painted/examples/watercolour/storyboard.json +79 -0
  28. package/packs/painted/look.md +71 -0
  29. package/packs/painted/pack.json +46 -0
  30. package/packs/painted/review.md +12 -0
  31. package/packs/painted/voice.md +30 -0
  32. package/plugins/motion-kit/.claude-plugin/plugin.json +5 -0
  33. package/plugins/motion-kit/README.md +31 -0
  34. package/plugins/motion-kit/commands/mk-draft.md +13 -0
  35. package/plugins/motion-kit/commands/mk-new.md +15 -0
  36. package/plugins/motion-kit/commands/mk-render.md +14 -0
  37. package/plugins/motion-kit/skills/motion-kit/SKILL.md +77 -0
  38. package/plugins/motion-kit/skills/motion-kit/references/authoring-scene.md +37 -0
  39. package/plugins/motion-kit/skills/motion-kit/references/authoring-style.md +17 -0
  40. package/plugins/motion-kit/skills/motion-kit/references/common-mistakes.md +73 -0
  41. package/plugins/motion-kit/skills/motion-kit/references/content-pack.md +81 -0
  42. package/plugins/motion-kit/skills/motion-kit/references/faux-ui.md +39 -0
  43. package/plugins/motion-kit/skills/motion-kit/references/free-storyboard.md +15 -0
  44. package/plugins/motion-kit/skills/motion-kit/references/intake.md +18 -0
  45. package/plugins/motion-kit/skills/motion-kit/references/knowledge-routing.md +32 -0
  46. package/plugins/motion-kit/skills/motion-kit/references/outline.md +24 -0
  47. package/plugins/motion-kit/skills/motion-kit/references/patching.md +50 -0
  48. package/plugins/motion-kit/skills/motion-kit/references/patterns.md +55 -0
  49. package/plugins/motion-kit/skills/motion-kit/references/quality-bar.md +61 -0
  50. package/plugins/motion-kit/skills/motion-kit/references/review.md +8 -0
  51. package/plugins/motion-kit/skills/motion-kit/references/scene-recipes.md +300 -0
  52. package/plugins/motion-kit/skills/motion-kit/references/setup.md +16 -0
  53. package/plugins/motion-kit/skills/motion-kit/references/slop.md +38 -0
  54. package/plugins/motion-kit/skills/motion-kit/references/storyboard-json.md +121 -0
  55. package/plugins/motion-kit/skills/motion-kit/references/troubleshooting.md +55 -0
  56. package/plugins/motion-kit/skills/motion-kit/references/voice.md +40 -0
  57. package/plugins/motion-kit/skills/motion-kit/references/worked-example.md +170 -0
  58. package/shared/themes/README.md +5 -0
  59. package/shared/themes/bold-dark.json +362 -0
  60. package/shared/themes/bold-light.json +362 -0
  61. package/shared/themes/calm-dark.json +362 -0
  62. package/shared/themes/calm-light.json +362 -0
  63. package/shared/themes/data-dark.json +360 -0
  64. package/shared/themes/data-light.json +360 -0
  65. package/shared/themes/editorial-dark.json +353 -0
  66. package/shared/themes/editorial-light.json +353 -0
  67. package/shared/themes/fjord-dark.json +124 -0
  68. package/shared/themes/fjord-light.json +124 -0
  69. package/shared/themes/playful-dark.json +362 -0
  70. package/shared/themes/playful-light.json +362 -0
  71. package/shared/themes/pop-dark.json +352 -0
  72. package/shared/themes/pop-light.json +352 -0
  73. package/shared/themes/tech-dark.json +360 -0
  74. package/shared/themes/tech-light.json +360 -0
  75. package/shared/themes/warm-dark.json +368 -0
  76. package/shared/themes/warm-light.json +368 -0
  77. package/skills/motion-kit/SKILL.md +77 -0
  78. package/skills/motion-kit/references/authoring-scene.md +37 -0
  79. package/skills/motion-kit/references/authoring-style.md +17 -0
  80. package/skills/motion-kit/references/common-mistakes.md +73 -0
  81. package/skills/motion-kit/references/content-pack.md +81 -0
  82. package/skills/motion-kit/references/faux-ui.md +39 -0
  83. package/skills/motion-kit/references/free-storyboard.md +15 -0
  84. package/skills/motion-kit/references/intake.md +18 -0
  85. package/skills/motion-kit/references/knowledge-routing.md +32 -0
  86. package/skills/motion-kit/references/outline.md +24 -0
  87. package/skills/motion-kit/references/patching.md +50 -0
  88. package/skills/motion-kit/references/patterns.md +55 -0
  89. package/skills/motion-kit/references/quality-bar.md +61 -0
  90. package/skills/motion-kit/references/review.md +8 -0
  91. package/skills/motion-kit/references/scene-recipes.md +300 -0
  92. package/skills/motion-kit/references/setup.md +16 -0
  93. package/skills/motion-kit/references/slop.md +38 -0
  94. package/skills/motion-kit/references/storyboard-json.md +121 -0
  95. package/skills/motion-kit/references/troubleshooting.md +55 -0
  96. package/skills/motion-kit/references/voice.md +40 -0
  97. package/skills/motion-kit/references/worked-example.md +170 -0
  98. package/stopwords.json +65 -0
  99. package/templates/compare/blueprints/versus.json +79 -0
  100. package/templates/compare/copy.md +18 -0
  101. package/templates/compare/pacing.json +15 -0
  102. package/templates/compare/previews/versus.png +0 -0
  103. package/templates/compare/styles/editorial.json +6 -0
  104. package/templates/compare/styles/punchy.json +6 -0
  105. package/templates/compare/styles/tidy.json +6 -0
  106. package/templates/compare/template.json +52 -0
  107. package/templates/datastory/blueprints/data-story.json +95 -0
  108. package/templates/datastory/blueprints/infographic.json +106 -0
  109. package/templates/datastory/blueprints/trend.json +93 -0
  110. package/templates/datastory/copy.md +16 -0
  111. package/templates/datastory/pacing.json +17 -0
  112. package/templates/datastory/previews/data-story.png +0 -0
  113. package/templates/datastory/previews/infographic.png +0 -0
  114. package/templates/datastory/previews/trend.png +0 -0
  115. package/templates/datastory/styles/clear.json +6 -0
  116. package/templates/datastory/styles/editorial.json +6 -0
  117. package/templates/datastory/styles/pop.json +7 -0
  118. package/templates/datastory/template.json +57 -0
  119. package/templates/event/blueprints/promo.json +71 -0
  120. package/templates/event/blueprints/save-the-date.json +61 -0
  121. package/templates/event/copy.md +16 -0
  122. package/templates/event/pacing.json +15 -0
  123. package/templates/event/previews/promo.png +0 -0
  124. package/templates/event/previews/save-the-date.png +0 -0
  125. package/templates/event/styles/bright.json +6 -0
  126. package/templates/event/styles/pop.json +6 -0
  127. package/templates/event/template.json +37 -0
  128. package/templates/explain/blueprints/architecture.json +76 -0
  129. package/templates/explain/blueprints/concept.json +89 -0
  130. package/templates/explain/blueprints/howto.json +56 -0
  131. package/templates/explain/blueprints/overview.json +126 -0
  132. package/templates/explain/copy.md +19 -0
  133. package/templates/explain/pacing.json +19 -0
  134. package/templates/explain/previews/architecture.png +0 -0
  135. package/templates/explain/previews/concept.png +0 -0
  136. package/templates/explain/previews/howto.png +0 -0
  137. package/templates/explain/previews/overview.png +0 -0
  138. package/templates/explain/styles/calm.json +6 -0
  139. package/templates/explain/styles/crisp.json +6 -0
  140. package/templates/explain/template.json +64 -0
  141. package/templates/guide/blueprints/lesson.json +173 -0
  142. package/templates/guide/blueprints/onboarding.json +80 -0
  143. package/templates/guide/blueprints/tutorial.json +102 -0
  144. package/templates/guide/copy.md +17 -0
  145. package/templates/guide/pacing.json +59 -0
  146. package/templates/guide/previews/lesson.png +0 -0
  147. package/templates/guide/previews/onboarding.png +0 -0
  148. package/templates/guide/previews/tutorial.png +0 -0
  149. package/templates/guide/styles/calm.json +15 -0
  150. package/templates/guide/styles/friendly.json +15 -0
  151. package/templates/guide/styles/techdark.json +15 -0
  152. package/templates/guide/template.json +95 -0
  153. package/templates/pitch/blueprints/feature.json +134 -0
  154. package/templates/pitch/blueprints/launch.json +173 -0
  155. package/templates/pitch/blueprints/pricing.json +141 -0
  156. package/templates/pitch/copy.md +18 -0
  157. package/templates/pitch/pacing.json +59 -0
  158. package/templates/pitch/previews/feature.png +0 -0
  159. package/templates/pitch/previews/launch.png +0 -0
  160. package/templates/pitch/previews/pricing.png +0 -0
  161. package/templates/pitch/styles/polished.json +6 -0
  162. package/templates/pitch/styles/punchy.json +6 -0
  163. package/templates/pitch/styles/teaser.json +12 -0
  164. package/templates/pitch/template.json +45 -0
  165. package/templates/recap/blueprints/news-recap.json +62 -0
  166. package/templates/recap/blueprints/timeline-story.json +94 -0
  167. package/templates/recap/copy.md +16 -0
  168. package/templates/recap/pacing.json +16 -0
  169. package/templates/recap/previews/news-recap.png +0 -0
  170. package/templates/recap/previews/timeline-story.png +0 -0
  171. package/templates/recap/styles/editorial.json +6 -0
  172. package/templates/recap/styles/editorialdark.json +6 -0
  173. package/templates/recap/template.json +50 -0
  174. package/templates/report/blueprints/kpi-review.json +116 -0
  175. package/templates/report/blueprints/status.json +78 -0
  176. package/templates/report/copy.md +17 -0
  177. package/templates/report/pacing.json +16 -0
  178. package/templates/report/previews/kpi-review.png +0 -0
  179. package/templates/report/previews/status.png +0 -0
  180. package/templates/report/styles/exec.json +6 -0
  181. package/templates/report/styles/memo.json +6 -0
  182. package/templates/report/styles/walkthrough.json +6 -0
  183. package/templates/report/template.json +56 -0
  184. package/templates/social/blueprints/announce.json +109 -0
  185. package/templates/social/blueprints/listicle.json +117 -0
  186. package/templates/social/blueprints/tip.json +114 -0
  187. package/templates/social/copy.md +18 -0
  188. package/templates/social/pacing.json +49 -0
  189. package/templates/social/previews/announce.png +0 -0
  190. package/templates/social/previews/listicle.png +0 -0
  191. package/templates/social/previews/tip.png +0 -0
  192. package/templates/social/styles/captioned.json +18 -0
  193. package/templates/social/styles/hook-first.json +15 -0
  194. package/templates/social/styles/techcut.json +15 -0
  195. package/templates/social/template.json +94 -0
  196. package/templates/update/blueprints/announcement.json +57 -0
  197. package/templates/update/blueprints/changelog.json +157 -0
  198. package/templates/update/blueprints/release-notes.json +151 -0
  199. package/templates/update/blueprints/weekly-update.json +88 -0
  200. package/templates/update/copy.md +17 -0
  201. package/templates/update/pacing.json +64 -0
  202. package/templates/update/previews/announcement.png +0 -0
  203. package/templates/update/previews/changelog.png +0 -0
  204. package/templates/update/previews/release-notes.png +0 -0
  205. package/templates/update/previews/weekly-update.png +0 -0
  206. package/templates/update/styles/punchy.json +15 -0
  207. package/templates/update/styles/techdark.json +6 -0
  208. package/templates/update/styles/tidy.json +6 -0
  209. package/templates/update/template.json +67 -0
  210. package/templates/vista/blueprints/spotlight.json +68 -0
  211. package/templates/vista/blueprints/tour.json +84 -0
  212. package/templates/vista/copy.md +18 -0
  213. package/templates/vista/pacing.json +14 -0
  214. package/templates/vista/previews/spotlight.png +0 -0
  215. package/templates/vista/previews/tour.png +0 -0
  216. package/templates/vista/styles/bright.json +6 -0
  217. package/templates/vista/styles/cinematic.json +6 -0
  218. package/templates/vista/template.json +42 -0
  219. package/templates/walkthrough/blueprints/product-tour.json +107 -0
  220. package/templates/walkthrough/copy.md +16 -0
  221. package/templates/walkthrough/pacing.json +16 -0
  222. package/templates/walkthrough/previews/product-tour.png +0 -0
  223. package/templates/walkthrough/styles/calm.json +6 -0
  224. package/templates/walkthrough/styles/deep.json +6 -0
  225. package/templates/walkthrough/template.json +37 -0
@@ -0,0 +1,134 @@
1
+ {
2
+ "id": "feature",
3
+ "purpose": "Tell one feature as problem then solution in 15-40s: title, optional hook, before/after wipe, call to action.",
4
+ "discover": {
5
+ "useCases": [
6
+ "Explain one feature as a problem followed by its solution.",
7
+ "Show a before and after of a single improvement in under a minute.",
8
+ "Announce a small update to existing users with a clear next step."
9
+ ],
10
+ "audience": ["customers", "prospects", "sponsors"],
11
+ "goodFor": "One feature with a clear problem, two or three solution points and a call to action.",
12
+ "notFor": "A whole-product launch (launch), step-by-step teaching (explain/howto).",
13
+ "tags": ["pitch", "product", "before-after", "marketing", "launch", "sales"],
14
+ "tone": ["bold", "energetic"],
15
+ "aspects": ["16:9", "9:16"],
16
+ "lengths": {
17
+ "min": 15,
18
+ "max": 40
19
+ }
20
+ },
21
+ "slots": {
22
+ "feature": {
23
+ "type": "text",
24
+ "max": 50,
25
+ "required": true
26
+ },
27
+ "problem": {
28
+ "type": "text",
29
+ "max": 60,
30
+ "required": true
31
+ },
32
+ "solution": {
33
+ "type": "text[]",
34
+ "min": 2,
35
+ "max": 3,
36
+ "itemMax": 50,
37
+ "required": true
38
+ },
39
+ "hook": {
40
+ "type": "text[]",
41
+ "min": 1,
42
+ "max": 4,
43
+ "itemMax": 14,
44
+ "optional": true
45
+ },
46
+ "cta": {
47
+ "type": "text",
48
+ "max": 40,
49
+ "required": true
50
+ },
51
+ "length": {
52
+ "type": "enum",
53
+ "values": ["short", "standard", "long"],
54
+ "default": "standard"
55
+ },
56
+ "style": {
57
+ "type": "enum",
58
+ "values": ["punchy", "polished", "teaser"],
59
+ "default": "punchy"
60
+ }
61
+ },
62
+ "example": {
63
+ "feature": "Quick Capture",
64
+ "problem": "Ideas get lost between apps",
65
+ "solution": ["One shortcut", "Any notebook", "Works offline"],
66
+ "hook": ["Less", "Clicking", "More", "Doing"],
67
+ "cta": "Try it today"
68
+ },
69
+ "meta": {
70
+ "title": {
71
+ "$slot": "feature"
72
+ },
73
+ "lang": "en"
74
+ },
75
+ "scenes": [
76
+ {
77
+ "id": "intro",
78
+ "type": "title",
79
+ "props": {
80
+ "kicker": "New",
81
+ "title": {
82
+ "$slot": "feature"
83
+ }
84
+ }
85
+ },
86
+ {
87
+ "when": "hook",
88
+ "id": "hook",
89
+ "type": "kinetic",
90
+ "props": {
91
+ "words": {
92
+ "$slot": "hook"
93
+ },
94
+ "mode": "slam"
95
+ }
96
+ },
97
+ {
98
+ "id": "shift",
99
+ "type": "compare",
100
+ "props": {
101
+ "mode": "wipe",
102
+ "left": {
103
+ "label": "Before",
104
+ "points": [
105
+ {
106
+ "$slot": "problem"
107
+ }
108
+ ]
109
+ },
110
+ "right": {
111
+ "label": "After",
112
+ "points": {
113
+ "$slot": "solution"
114
+ }
115
+ },
116
+ "winner": "right"
117
+ }
118
+ },
119
+ {
120
+ "id": "end",
121
+ "type": "outro",
122
+ "props": {
123
+ "title": {
124
+ "$slot": "cta"
125
+ },
126
+ "lines": [
127
+ {
128
+ "$slot": "feature"
129
+ }
130
+ ]
131
+ }
132
+ }
133
+ ]
134
+ }
@@ -0,0 +1,173 @@
1
+ {
2
+ "id": "launch",
3
+ "purpose": "Announce something new in 20-50s: title, hook beats, tagline, three benefit cards, one proof number, call to action.",
4
+ "discover": {
5
+ "useCases": [
6
+ "Announce a new product or service and name its three main benefits.",
7
+ "Open a campaign with a short hook, a promise and one proof point.",
8
+ "Introduce an idea to prospects or sponsors with a clear call to action."
9
+ ],
10
+ "audience": ["prospects", "customers", "investors"],
11
+ "goodFor": "A launch with three benefits, an optional proof number and one call to action.",
12
+ "notFor": "Explaining how something works (explain), a single feature story (feature).",
13
+ "tags": ["pitch", "launch", "product", "marketing", "promo", "sales"],
14
+ "tone": ["bold", "energetic"],
15
+ "aspects": ["16:9", "9:16"],
16
+ "lengths": {
17
+ "min": 20,
18
+ "max": 50
19
+ }
20
+ },
21
+ "slots": {
22
+ "product": {
23
+ "type": "text",
24
+ "max": 40,
25
+ "required": true
26
+ },
27
+ "tagline": {
28
+ "type": "text",
29
+ "max": 70,
30
+ "required": true
31
+ },
32
+ "hook": {
33
+ "type": "text[]",
34
+ "min": 1,
35
+ "max": 4,
36
+ "itemMax": 14,
37
+ "optional": true
38
+ },
39
+ "benefits": {
40
+ "type": "object",
41
+ "fields": {
42
+ "icon": "text",
43
+ "label": "text",
44
+ "detail": "text"
45
+ },
46
+ "list": true,
47
+ "min": 3,
48
+ "max": 3,
49
+ "required": true
50
+ },
51
+ "proof": {
52
+ "type": "object",
53
+ "fields": {
54
+ "value": "number",
55
+ "unit": "text",
56
+ "label": "text"
57
+ },
58
+ "optional": true
59
+ },
60
+ "cta": {
61
+ "type": "text",
62
+ "max": 40,
63
+ "required": true
64
+ },
65
+ "brand": {
66
+ "type": "text",
67
+ "max": 30,
68
+ "optional": true
69
+ },
70
+ "length": {
71
+ "type": "enum",
72
+ "values": ["short", "standard", "long"],
73
+ "default": "standard"
74
+ },
75
+ "style": {
76
+ "type": "enum",
77
+ "values": ["punchy", "polished", "teaser"],
78
+ "default": "punchy"
79
+ }
80
+ },
81
+ "example": {
82
+ "product": "Briar Notes",
83
+ "tagline": "Do the work in half the time",
84
+ "hook": ["Faster", "Simpler", "Yours"],
85
+ "benefits": [
86
+ {
87
+ "icon": "zap",
88
+ "label": "Fast setup",
89
+ "detail": "Live today"
90
+ },
91
+ {
92
+ "icon": "shield-check",
93
+ "label": "Safe",
94
+ "detail": "Always on"
95
+ },
96
+ {
97
+ "icon": "globe",
98
+ "label": "Anywhere",
99
+ "detail": "Any device"
100
+ }
101
+ ],
102
+ "proof": {
103
+ "value": 50,
104
+ "unit": "%",
105
+ "label": "less time on routine work"
106
+ },
107
+ "cta": "Start today",
108
+ "brand": "Briar Labs"
109
+ },
110
+ "meta": {
111
+ "title": {
112
+ "$slot": "product"
113
+ },
114
+ "lang": "en"
115
+ },
116
+ "scenes": [
117
+ {
118
+ "id": "intro",
119
+ "type": "title",
120
+ "props": {
121
+ "kicker": "Introducing",
122
+ "title": {
123
+ "$slot": "product"
124
+ },
125
+ "subtitle": {
126
+ "$slot": "tagline"
127
+ }
128
+ }
129
+ },
130
+ {
131
+ "when": "hook",
132
+ "id": "hook",
133
+ "type": "kinetic",
134
+ "props": {
135
+ "words": {
136
+ "$slot": "hook"
137
+ },
138
+ "mode": "slam"
139
+ }
140
+ },
141
+ {
142
+ "id": "benefits",
143
+ "type": "icon-grid",
144
+ "props": {
145
+ "items": {
146
+ "$slot": "benefits"
147
+ }
148
+ }
149
+ },
150
+ {
151
+ "when": "proof",
152
+ "id": "proof",
153
+ "type": "stat",
154
+ "props": {
155
+ "$spread": "proof"
156
+ }
157
+ },
158
+ {
159
+ "id": "end",
160
+ "type": "outro",
161
+ "props": {
162
+ "title": {
163
+ "$slot": "cta"
164
+ },
165
+ "lines": [
166
+ {
167
+ "$slot": "brand"
168
+ }
169
+ ]
170
+ }
171
+ }
172
+ ]
173
+ }
@@ -0,0 +1,141 @@
1
+ {
2
+ "id": "pricing",
3
+ "purpose": "Show 2-5 plans as an ascending price ladder in 20-45s with values visible, one recommended tier, optional note, call to action.",
4
+ "discover": {
5
+ "useCases": [
6
+ "Show plans or tiers and what changes between them.",
7
+ "Present a price ladder with one recommended option for a buying decision.",
8
+ "Summarise levels of service or membership with a value on each step."
9
+ ],
10
+ "audience": ["prospects", "customers", "sponsors"],
11
+ "goodFor": "Two to five ordered tiers, each with a name, a price or value, and a short note.",
12
+ "notFor": "Open-ended feature comparison (compare), cost analysis with charts (datastory).",
13
+ "tags": ["pitch", "pricing", "sales", "product", "marketing", "steps"],
14
+ "tone": ["bold", "clear"],
15
+ "aspects": ["16:9", "9:16"],
16
+ "lengths": {
17
+ "min": 20,
18
+ "max": 45
19
+ }
20
+ },
21
+ "slots": {
22
+ "title": {
23
+ "type": "text",
24
+ "max": 50,
25
+ "required": true
26
+ },
27
+ "tiers": {
28
+ "type": "object",
29
+ "fields": {
30
+ "label": "text",
31
+ "value": "text",
32
+ "detail": "text"
33
+ },
34
+ "list": true,
35
+ "min": 2,
36
+ "max": 5,
37
+ "required": true
38
+ },
39
+ "recommended": {
40
+ "type": "number",
41
+ "int": true,
42
+ "min": 1,
43
+ "max": 5,
44
+ "optional": true
45
+ },
46
+ "note": {
47
+ "type": "text",
48
+ "max": 100,
49
+ "optional": true
50
+ },
51
+ "cta": {
52
+ "type": "text",
53
+ "max": 40,
54
+ "required": true
55
+ },
56
+ "length": {
57
+ "type": "enum",
58
+ "values": ["short", "standard", "long"],
59
+ "default": "standard"
60
+ },
61
+ "style": {
62
+ "type": "enum",
63
+ "values": ["punchy", "polished", "teaser"],
64
+ "default": "punchy"
65
+ }
66
+ },
67
+ "example": {
68
+ "title": "Pick your plan",
69
+ "tiers": [
70
+ {
71
+ "label": "Starter",
72
+ "value": "$0",
73
+ "detail": "Just trying"
74
+ },
75
+ {
76
+ "label": "Team",
77
+ "value": "$29",
78
+ "detail": "Shared space"
79
+ },
80
+ {
81
+ "label": "Scale",
82
+ "value": "$99",
83
+ "detail": "Priority help"
84
+ }
85
+ ],
86
+ "recommended": 2,
87
+ "note": "[Annual] billing saves two months",
88
+ "cta": "Choose a plan"
89
+ },
90
+ "meta": {
91
+ "title": {
92
+ "$slot": "title"
93
+ },
94
+ "lang": "en"
95
+ },
96
+ "scenes": [
97
+ {
98
+ "id": "intro",
99
+ "type": "title",
100
+ "props": {
101
+ "kicker": "Plans",
102
+ "title": {
103
+ "$slot": "title"
104
+ }
105
+ }
106
+ },
107
+ {
108
+ "id": "ladder",
109
+ "type": "steps",
110
+ "props": {
111
+ "layout": "ladder",
112
+ "steps": {
113
+ "$slot": "tiers"
114
+ },
115
+ "active": {
116
+ "$slot": "recommended"
117
+ }
118
+ }
119
+ },
120
+ {
121
+ "when": "note",
122
+ "id": "note",
123
+ "type": "callout",
124
+ "props": {
125
+ "kind": "tip",
126
+ "text": {
127
+ "$slot": "note"
128
+ }
129
+ }
130
+ },
131
+ {
132
+ "id": "end",
133
+ "type": "outro",
134
+ "props": {
135
+ "title": {
136
+ "$slot": "cta"
137
+ }
138
+ }
139
+ }
140
+ ]
141
+ }
@@ -0,0 +1,18 @@
1
+ # Pitch copy guide
2
+
3
+ Tone: confident, concrete, energetic. Sell the outcome, not the feature list.
4
+
5
+ Do
6
+ - Hook first: a 1-3 word beat, then the promise.
7
+ - Tagline: one benefit in at most 8 words.
8
+ - Benefits: label of 1-3 words, detail of 3-7 words, one icon each.
9
+ - Prices: show a value on every tier, mark one as recommended.
10
+ - End with a single call to action, an imperative of 2-5 words.
11
+
12
+ Don't
13
+ - No more than 3 benefits, 5 tiers, 40 words per scene.
14
+ - No superlatives you cannot prove (best, revolutionary, seamless).
15
+ - No invented numbers: one sourced proof point or none.
16
+ - No exclamation marks in more than one scene.
17
+
18
+ Vocabulary: "plan" not "SKU", "start" not "leverage", "you" not "users".
@@ -0,0 +1,59 @@
1
+ {
2
+ "wordsPerSecond": 2.8,
3
+ "sceneSeconds": {
4
+ "title": {
5
+ "short": 3,
6
+ "standard": 4,
7
+ "long": 5
8
+ },
9
+ "kinetic": {
10
+ "short": 3,
11
+ "standard": 4,
12
+ "long": 5
13
+ },
14
+ "icon-grid": {
15
+ "short": 5,
16
+ "standard": 7,
17
+ "long": 10
18
+ },
19
+ "stat": {
20
+ "short": 4,
21
+ "standard": 5,
22
+ "long": 6
23
+ },
24
+ "compare": {
25
+ "short": 6,
26
+ "standard": 8,
27
+ "long": 11
28
+ },
29
+ "steps": {
30
+ "short": 6,
31
+ "standard": 8,
32
+ "long": 11
33
+ },
34
+ "callout": {
35
+ "short": 3,
36
+ "standard": 4,
37
+ "long": 5
38
+ },
39
+ "outro": {
40
+ "short": 3,
41
+ "standard": 4,
42
+ "long": 5
43
+ }
44
+ },
45
+ "lengths": {
46
+ "short": {
47
+ "scenes": [3, 6],
48
+ "totalSec": [10, 40]
49
+ },
50
+ "standard": {
51
+ "scenes": [3, 7],
52
+ "totalSec": [15, 60]
53
+ },
54
+ "long": {
55
+ "scenes": [4, 8],
56
+ "totalSec": [30, 75]
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "polished",
3
+ "theme": "bold-light",
4
+ "frame": { "width": 1920, "height": 1080, "fps": 30 },
5
+ "direction": { "shot": "medium", "move": "push-in", "ease": "out", "transition": "crossfade" }
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "punchy",
3
+ "theme": "bold-dark",
4
+ "frame": { "width": 1920, "height": 1080, "fps": 30 },
5
+ "direction": { "shot": "close", "move": "push-in", "ease": "out", "transition": "cut" }
6
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "teaser",
3
+ "theme": "pop-dark",
4
+ "frame": { "width": 1080, "height": 1920, "fps": 30 },
5
+ "direction": {
6
+ "shot": "close",
7
+ "move": "push-in",
8
+ "ease": "spring-snappy",
9
+ "transition": "cut"
10
+ },
11
+ "props": { "icon-grid": { "cols": 2 } }
12
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "templateVersion": 1,
3
+ "id": "pitch",
4
+ "version": "1.0.1",
5
+ "title": "Pitch",
6
+ "summary": "Persuasive launches, feature stories and price ladders. Bold, fast, icon-led.",
7
+ "domains": ["marketing", "sales", "product"],
8
+ "discover": {
9
+ "useCases": [
10
+ "Announce a product, service or idea and make people want it.",
11
+ "Explain one feature as a problem followed by its solution.",
12
+ "Show plans or tiers and what changes between them.",
13
+ "Cut a short vertical teaser from the same copy for social channels."
14
+ ],
15
+ "audience": ["prospects", "customers", "investors", "sponsors"],
16
+ "goodFor": "Persuading an outside audience with a hook, three benefits and a call to action.",
17
+ "notFor": "Neutral explanation (explain), dense numeric analysis (datastory).",
18
+ "tags": ["pitch", "launch", "product", "pricing", "sales", "marketing", "promo"],
19
+ "tone": ["bold", "energetic"],
20
+ "aspects": ["16:9", "9:16"]
21
+ },
22
+ "requires": {
23
+ "storyboard": 1,
24
+ "scenes": ["title", "kinetic", "icon-grid", "stat", "compare", "steps", "callout", "outro"]
25
+ },
26
+ "themes": [
27
+ { "id": "bold-light", "file": "@shared/bold-light.json", "mode": "light", "pair": "bold-dark" },
28
+ { "id": "bold-dark", "file": "@shared/bold-dark.json", "mode": "dark", "pair": "bold-light" },
29
+ { "id": "pop-light", "file": "@shared/pop-light.json", "mode": "light", "pair": "pop-dark" },
30
+ { "id": "pop-dark", "file": "@shared/pop-dark.json", "mode": "dark", "pair": "pop-light" }
31
+ ],
32
+ "styles": [
33
+ { "id": "punchy", "file": "styles/punchy.json" },
34
+ { "id": "polished", "file": "styles/polished.json" },
35
+ { "id": "teaser", "file": "styles/teaser.json" }
36
+ ],
37
+ "blueprints": [
38
+ { "id": "launch", "file": "blueprints/launch.json" },
39
+ { "id": "feature", "file": "blueprints/feature.json" },
40
+ { "id": "pricing", "file": "blueprints/pricing.json" }
41
+ ],
42
+ "pacing": "pacing.json",
43
+ "copy": "copy.md",
44
+ "license": "Apache-2.0"
45
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "discover": {
3
+ "aspects": ["16:9", "1:1"],
4
+ "audience": ["readers", "team", "stakeholders"],
5
+ "goodFor": "A period with 3-6 dated events and one number.",
6
+ "lengths": { "max": 90, "min": 40 },
7
+ "notFor": "Single narratives, upcoming occasions, metric deep dives (datastory).",
8
+ "tags": ["recap", "news", "timeline", "data"],
9
+ "tone": ["calm", "direct"],
10
+ "useCases": [
11
+ "Recap what happened over a period, oldest first.",
12
+ "Pair a timeline with one number readers should keep.",
13
+ "Close a look back with one line on what is next."
14
+ ]
15
+ },
16
+ "example": {
17
+ "closing": "Doors open again in spring",
18
+ "items": [
19
+ { "detail": "Stalls up at dawn", "label": "Gates open", "when": "Week 1" },
20
+ { "detail": "Two growers join", "label": "Market grows", "when": "Week 2" },
21
+ { "detail": "Record Saturday footfall", "label": "Best day", "when": "Week 3" }
22
+ ],
23
+ "period": "A month at the fair (illustrative)",
24
+ "stat": { "label": "visitors across the month", "value": 1200 }
25
+ },
26
+ "id": "news-recap",
27
+ "meta": { "lang": "en", "title": { "$slot": "period" } },
28
+ "purpose": "Recap a period in 40-90s: events on a timeline, one number, close.",
29
+ "scenes": [
30
+ {
31
+ "id": "intro",
32
+ "props": { "kicker": "Recap", "title": { "$slot": "period" } },
33
+ "type": "title"
34
+ },
35
+ {
36
+ "id": "events",
37
+ "props": { "items": { "$slot": "items" }, "title": "What happened" },
38
+ "type": "timeline"
39
+ },
40
+ { "id": "number", "props": { "$spread": "stat" }, "type": "stat", "when": "stat" },
41
+ { "id": "end", "props": { "title": { "$slot": "closing" } }, "type": "outro" }
42
+ ],
43
+ "slots": {
44
+ "closing": { "max": 60, "required": true, "type": "text" },
45
+ "items": {
46
+ "fields": { "detail": "text", "label": "text", "when": "text" },
47
+ "list": true,
48
+ "max": 6,
49
+ "min": 3,
50
+ "required": true,
51
+ "type": "object"
52
+ },
53
+ "length": { "default": "standard", "type": "enum", "values": ["short", "standard", "long"] },
54
+ "period": { "max": 40, "required": true, "type": "text" },
55
+ "stat": {
56
+ "fields": { "label": "text", "value": "number" },
57
+ "optional": true,
58
+ "type": "object"
59
+ },
60
+ "style": { "default": "editorial", "type": "enum", "values": ["editorial", "editorialdark"] }
61
+ }
62
+ }