markform 0.1.20 → 0.1.22

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 (58) hide show
  1. package/README.md +44 -12
  2. package/dist/ai-sdk.d.mts +1 -1
  3. package/dist/ai-sdk.mjs +2 -2
  4. package/dist/{apply-DIvm1b1s.mjs → apply-C7mO7VkZ.mjs} +158 -95
  5. package/dist/apply-C7mO7VkZ.mjs.map +1 -0
  6. package/dist/bin.mjs +1 -1
  7. package/dist/{cli-FFMoEhFS.mjs → cli-C8F9yDsv.mjs} +102 -1225
  8. package/dist/cli-C8F9yDsv.mjs.map +1 -0
  9. package/dist/cli.mjs +1 -1
  10. package/dist/{coreTypes-CkxML8g2.d.mts → coreTypes-BlsJkU1w.d.mts} +28 -2
  11. package/dist/{coreTypes-CPKXf2dc.mjs → coreTypes-CTLr-NGd.mjs} +24 -3
  12. package/dist/coreTypes-CTLr-NGd.mjs.map +1 -0
  13. package/dist/fillRecord-DTl5lnK0.d.mts +345 -0
  14. package/dist/fillRecordRenderer-CruJrLkj.mjs +1256 -0
  15. package/dist/fillRecordRenderer-CruJrLkj.mjs.map +1 -0
  16. package/dist/index.d.mts +22 -342
  17. package/dist/index.mjs +5 -5
  18. package/dist/render.d.mts +74 -0
  19. package/dist/render.mjs +4 -0
  20. package/dist/{session-CK0x28RO.mjs → session-BCcltrLA.mjs} +2 -2
  21. package/dist/{session-CK0x28RO.mjs.map → session-BCcltrLA.mjs.map} +1 -1
  22. package/dist/{session-ZHBi3LVQ.mjs → session-VeSkVrck.mjs} +1 -1
  23. package/dist/{shared-DwdyWmvE.mjs → shared-CsdT2T7k.mjs} +1 -1
  24. package/dist/{shared-DwdyWmvE.mjs.map → shared-CsdT2T7k.mjs.map} +1 -1
  25. package/dist/{shared-BTR35aMz.mjs → shared-fb0nkzQi.mjs} +1 -1
  26. package/dist/{src-wR7GoftB.mjs → src-CbRnGzMK.mjs} +205 -138
  27. package/dist/src-CbRnGzMK.mjs.map +1 -0
  28. package/dist/urlFormat-lls7CsEP.mjs +71 -0
  29. package/dist/urlFormat-lls7CsEP.mjs.map +1 -0
  30. package/docs/markform-apis.md +53 -0
  31. package/examples/movie-research/movie-deep-research-mock-filled.form.md +320 -343
  32. package/examples/movie-research/movie-deep-research.form.md +273 -308
  33. package/examples/movie-research/movie-research-demo.form.md +27 -41
  34. package/examples/parallel/parallel-research.form.md +33 -29
  35. package/examples/parallel/parallel-research.mock.filled.form.md +88 -0
  36. package/examples/rejection-test/rejection-test-mock-filled.form.md +21 -16
  37. package/examples/rejection-test/rejection-test-mock-filled.schema.json +1 -1
  38. package/examples/rejection-test/rejection-test.form.md +17 -15
  39. package/examples/rejection-test/rejection-test.session.yaml +88 -60
  40. package/examples/simple/simple-mock-filled.form.md +113 -126
  41. package/examples/simple/simple-mock-filled.schema.json +2 -3
  42. package/examples/simple/simple-skipped-filled.form.md +112 -129
  43. package/examples/simple/simple-skipped-filled.report.md +8 -8
  44. package/examples/simple/simple-skipped-filled.schema.json +2 -3
  45. package/examples/simple/simple-tags-syntax.form.md +32 -0
  46. package/examples/simple/simple-with-skips.session.yaml +663 -627
  47. package/examples/simple/simple.form.md +97 -113
  48. package/examples/simple/simple.schema.json +2 -3
  49. package/examples/simple/simple.session.yaml +663 -627
  50. package/examples/startup-deep-research/startup-deep-research.form.md +191 -235
  51. package/examples/startup-research/startup-research-mock-filled.form.md +128 -147
  52. package/examples/startup-research/startup-research.form.md +90 -129
  53. package/examples/twitter-thread/twitter-thread.form.md +373 -0
  54. package/package.json +5 -1
  55. package/dist/apply-DIvm1b1s.mjs.map +0 -1
  56. package/dist/cli-FFMoEhFS.mjs.map +0 -1
  57. package/dist/coreTypes-CPKXf2dc.mjs.map +0 -1
  58. package/dist/src-wR7GoftB.mjs.map +0 -1
@@ -2,478 +2,443 @@
2
2
  markform:
3
3
  spec: MF/0.1
4
4
  title: Movie Deep Research
5
- description: Comprehensive movie research form with ratings, box office, cast/crew, technical specs, streaming availability, and cultural analysis.
5
+ description: Comprehensive movie research form with ratings, box office, cast/crew,
6
+ technical specs, streaming availability, and cultural analysis.
6
7
  run_mode: research
7
- roles:
8
- - user
9
- - agent
8
+ harness:
9
+ max_patches_per_turn: 15
10
+ max_issues_per_turn: 5
10
11
  role_instructions:
11
- user: "Enter the movie title and optionally the year for disambiguation."
12
- agent: |
13
- Conduct comprehensive research and fill in all available fields for the specified movie.
12
+ user: Enter the movie title and optionally the year for disambiguation.
13
+ agent: >
14
+ Conduct comprehensive research and fill in all available fields for the specified
15
+ movie.
16
+
14
17
 
15
18
  WORKFLOW - Complete in this order:
19
+
16
20
  1. IDENTIFY - Confirm the movie title and year
21
+
17
22
  2. SOURCES - Find all source URLs first (verify correct movie on each site)
23
+
18
24
  3. BASIC DATA - Fill ratings, cast, crew from IMDB
25
+
19
26
  4. ADDITIONAL RATINGS - RT, Metacritic, Letterboxd scores
27
+
20
28
  5. BOX OFFICE - Financial data from Box Office Mojo
29
+
21
30
  6. STREAMING - Current availability from JustWatch
31
+
22
32
  7. DEEP ANALYSIS - Technical specs, awards, cultural context
23
33
 
34
+
24
35
  SOURCE MAPPING:
36
+
25
37
  - IMDB: Core data, cast, crew, technical specs, awards
38
+
26
39
  - Rotten Tomatoes: Tomatometer, Audience Score, Critics Consensus
40
+
27
41
  - Metacritic: Metascore
42
+
28
43
  - Box Office Mojo: Budget, domestic/worldwide gross, opening weekend
44
+
29
45
  - JustWatch: Current streaming platforms (use US region)
46
+
30
47
  - Letterboxd: Cinephile community rating
48
+
31
49
  - Wikipedia: Cultural impact, production history
32
50
 
51
+
33
52
  GUIDELINES:
53
+
34
54
  - Use EXACT scores from each source - don't average or interpret
55
+
35
56
  - Skip fields if data unavailable (older films may lack some metrics)
57
+
36
58
  - For box office, use millions (e.g., 100.5 for $100.5M)
59
+
37
60
  - Add notes for any missing, confusing, or unclear information
38
- harness:
39
- max_issues_per_turn: 5
40
- max_patches_per_turn: 15
41
61
  ---
42
- {% form id="movie_research_deep" title="Movie Deep Research" %}
43
62
 
44
- {% description ref="movie_research_deep" %}
63
+ <!-- form id="movie_research_deep" title="Movie Deep Research" -->
64
+
65
+ <!-- description ref="movie_research_deep" -->
45
66
  Comprehensive movie research covering ratings from multiple sources, box office
46
67
  performance, full cast and crew, technical specifications, streaming availability, and
47
68
  cultural impact analysis.
48
- {% /description %}
69
+ <!-- /description -->
49
70
 
50
- {% group id="movie_input" title="Movie Identification" %}
71
+ <!-- group id="movie_input" title="Movie Identification" -->
51
72
 
52
- {% field kind="string" id="movie" label="Movie" role="user" required=true minLength=1 maxLength=300 %}{% /field %}
73
+ <!-- field kind="string" id="movie" role="user" label="Movie" maxLength=300 minLength=1 required=true --><!-- /field -->
53
74
 
54
- {% instructions ref="movie" %}
75
+ <!-- instructions ref="movie" -->
55
76
  Enter the movie title (add any details to help identify, like “Barbie 2023” or “the
56
77
  Batman movie with Robert Pattinson”).
57
- {% /instructions %}
78
+ <!-- /instructions -->
58
79
 
59
- {% /group %}
80
+ <!-- /group -->
60
81
 
61
- ## Title Identification
82
+ <!-- group id="title_identification" title="Title Identification" -->
62
83
 
63
- {% group id="title_identification" title="Title Identification" %}
84
+ <!-- field kind="string" id="full_title" label="Full Title" required=true --><!-- /field -->
64
85
 
65
- {% field kind="string" id="full_title" label="Full Title" role="agent" required=true %}{% /field %}
66
-
67
- {% instructions ref="full_title" %}
86
+ <!-- instructions ref="full_title" -->
68
87
  Official title including subtitle if any (e.g., “The Lord of the Rings: The Fellowship
69
88
  of the Ring”).
70
- {% /instructions %}
71
-
72
- {% field kind="number" id="year" label="Release Year" role="agent" required=true min=1888 max=2030 %}{% /field %}
89
+ <!-- /instructions -->
73
90
 
74
- {% /group %}
91
+ <!-- field kind="number" id="year" label="Release Year" max=2030 min=1888 required=true --><!-- /field -->
75
92
 
76
- ## Sources
93
+ <!-- /group -->
77
94
 
78
- {% group id="primary_sources" title="Primary Sources" %}
95
+ <!-- group id="primary_sources" title="Primary Sources" -->
79
96
 
80
- {% field kind="url" id="imdb_url" label="IMDB URL" role="agent" required=true %}{% /field %}
97
+ <!-- field kind="url" id="imdb_url" label="IMDB URL" required=true --><!-- /field -->
81
98
 
82
- {% instructions ref="imdb_url" %}
99
+ <!-- instructions ref="imdb_url" -->
83
100
  Required. Primary source for ratings, cast, crew, technical details.
84
101
  Format: https://www.imdb.com/title/tt0111161/
85
- {% /instructions %}
102
+ <!-- /instructions -->
86
103
 
87
- {% field kind="url" id="rt_url" label="Rotten Tomatoes URL" role="agent" %}{% /field %}
104
+ <!-- field kind="url" id="rt_url" label="Rotten Tomatoes URL" --><!-- /field -->
88
105
 
89
- {% instructions ref="rt_url" %}
106
+ <!-- instructions ref="rt_url" -->
90
107
  Direct link to the movie’s Rotten Tomatoes page.
91
- {% /instructions %}
108
+ <!-- /instructions -->
92
109
 
93
- {% field kind="url" id="metacritic_url" label="Metacritic URL" role="agent" %}{% /field %}
110
+ <!-- field kind="url" id="metacritic_url" label="Metacritic URL" --><!-- /field -->
94
111
 
95
- {% instructions ref="metacritic_url" %}
112
+ <!-- instructions ref="metacritic_url" -->
96
113
  Direct link to the movie’s Metacritic page.
97
- {% /instructions %}
114
+ <!-- /instructions -->
98
115
 
99
- {% /group %}
116
+ <!-- /group -->
100
117
 
101
- {% group id="box_office_sources" title="Box Office Sources" %}
118
+ <!-- group id="box_office_sources" title="Box Office Sources" -->
102
119
 
103
- {% field kind="url" id="boxofficemojo_url" label="Box Office Mojo URL" role="agent" %}{% /field %}
120
+ <!-- field kind="url" id="boxofficemojo_url" label="Box Office Mojo URL" --><!-- /field -->
104
121
 
105
- {% instructions ref="boxofficemojo_url" %}
122
+ <!-- instructions ref="boxofficemojo_url" -->
106
123
  Best source for budget, domestic/worldwide gross, opening weekend.
107
124
  Format: https://www.boxofficemojo.com/title/tt0111161/
108
- {% /instructions %}
125
+ <!-- /instructions -->
109
126
 
110
- {% field kind="url" id="the_numbers_url" label="The Numbers URL" role="agent" %}{% /field %}
127
+ <!-- field kind="url" id="the_numbers_url" label="The Numbers URL" --><!-- /field -->
111
128
 
112
- {% instructions ref="the_numbers_url" %}
129
+ <!-- instructions ref="the_numbers_url" -->
113
130
  Alternative/supplementary box office data and profitability analysis.
114
- {% /instructions %}
131
+ <!-- /instructions -->
115
132
 
116
- {% /group %}
133
+ <!-- /group -->
117
134
 
118
- {% group id="availability_sources" title="Availability Sources" %}
135
+ <!-- group id="availability_sources" title="Availability Sources" -->
119
136
 
120
- {% field kind="url" id="justwatch_url" label="JustWatch URL" role="agent" %}{% /field %}
137
+ <!-- field kind="url" id="justwatch_url" label="JustWatch URL" --><!-- /field -->
121
138
 
122
- {% instructions ref="justwatch_url" %}
139
+ <!-- instructions ref="justwatch_url" -->
123
140
  Best source for current streaming availability.
124
141
  Use US region. Format: https://www.justwatch.com/us/movie/the-shawshank-redemption
125
- {% /instructions %}
142
+ <!-- /instructions -->
126
143
 
127
- {% /group %}
144
+ <!-- /group -->
128
145
 
129
- {% group id="additional_sources" title="Additional Sources" %}
146
+ <!-- group id="additional_sources" title="Additional Sources" -->
130
147
 
131
- {% field kind="url" id="letterboxd_url" label="Letterboxd URL" role="agent" %}{% /field %}
148
+ <!-- field kind="url" id="letterboxd_url" label="Letterboxd URL" --><!-- /field -->
132
149
 
133
- {% instructions ref="letterboxd_url" %}
150
+ <!-- instructions ref="letterboxd_url" -->
134
151
  Cinephile community ratings.
135
152
  Especially useful for art/indie/cult films.
136
- {% /instructions %}
153
+ <!-- /instructions -->
137
154
 
138
- {% field kind="url" id="wikipedia_url" label="Wikipedia URL" role="agent" %}{% /field %}
155
+ <!-- field kind="url" id="wikipedia_url" label="Wikipedia URL" --><!-- /field -->
139
156
 
140
- {% instructions ref="wikipedia_url" %}
157
+ <!-- instructions ref="wikipedia_url" -->
141
158
  For production history, cultural impact, comprehensive awards list.
142
- {% /instructions %}
159
+ <!-- /instructions -->
143
160
 
144
- {% field kind="url" id="official_site_url" label="Official Website" role="agent" %}{% /field %}
161
+ <!-- field kind="url" id="official_site_url" label="Official Website" --><!-- /field -->
145
162
 
146
- {% instructions ref="official_site_url" %}
163
+ <!-- instructions ref="official_site_url" -->
147
164
  Studio or film’s official website, if still active.
148
- {% /instructions %}
149
-
150
- {% /group %}
165
+ <!-- /instructions -->
151
166
 
152
- ## Basic Details
167
+ <!-- /group -->
153
168
 
154
- {% group id="basic_details" title="Basic Details" %}
169
+ <!-- group id="basic_details" title="Basic Details" -->
155
170
 
156
- {% field kind="string_list" id="directors" label="Director(s)" role="agent" required=true %}{% /field %}
171
+ <!-- field kind="string_list" id="directors" label="Director(s)" required=true --><!-- /field -->
157
172
 
158
- {% instructions ref="directors" %}
173
+ <!-- instructions ref="directors" -->
159
174
  One director per line.
160
175
  Most films have one; some have two or more co-directors.
161
- {% /instructions %}
162
-
163
- {% field kind="number" id="runtime_minutes" label="Runtime (minutes)" role="agent" min=1 max=1000 %}{% /field %}
164
-
165
- {% field kind="single_select" id="mpaa_rating" label="MPAA Rating" role="agent" %}
166
-
167
- - [ ] G {% #g %}
168
- - [ ] PG {% #pg %}
169
- - [ ] PG-13 {% #pg_13 %}
170
- - [ ] R {% #r %}
171
- - [ ] NC-17 {% #nc_17 %}
172
- - [ ] NR/Unrated {% #nr %}
173
-
174
- {% /field %}
175
-
176
- {% field kind="multi_select" id="genres" label="Genres" role="agent" minSelections=1 maxSelections=5 %}
177
-
178
- - [ ] Action {% #action %}
179
- - [ ] Adventure {% #adventure %}
180
- - [ ] Animation {% #animation %}
181
- - [ ] Biography {% #biography %}
182
- - [ ] Comedy {% #comedy %}
183
- - [ ] Crime {% #crime %}
184
- - [ ] Documentary {% #documentary %}
185
- - [ ] Drama {% #drama %}
186
- - [ ] Family {% #family %}
187
- - [ ] Fantasy {% #fantasy %}
188
- - [ ] Film-Noir {% #film_noir %}
189
- - [ ] History {% #history %}
190
- - [ ] Horror {% #horror %}
191
- - [ ] Music {% #music %}
192
- - [ ] Musical {% #musical %}
193
- - [ ] Mystery {% #mystery %}
194
- - [ ] Romance {% #romance %}
195
- - [ ] Sci-Fi {% #sci_fi %}
196
- - [ ] Sport {% #sport %}
197
- - [ ] Thriller {% #thriller %}
198
- - [ ] War {% #war %}
199
- - [ ] Western {% #western %}
200
-
201
- {% /field %}
202
-
203
- {% instructions ref="genres" %}
176
+ <!-- /instructions -->
177
+
178
+ <!-- field kind="number" id="runtime_minutes" label="Runtime (minutes)" max=1000 min=1 --><!-- /field -->
179
+
180
+ <!-- field kind="single_select" id="mpaa_rating" label="MPAA Rating" -->
181
+ - [ ] G <!-- #g -->
182
+ - [ ] PG <!-- #pg -->
183
+ - [ ] PG-13 <!-- #pg_13 -->
184
+ - [ ] R <!-- #r -->
185
+ - [ ] NC-17 <!-- #nc_17 -->
186
+ - [ ] NR/Unrated <!-- #nr -->
187
+ <!-- /field -->
188
+
189
+ <!-- field kind="multi_select" id="genres" label="Genres" maxSelections=5 minSelections=1 -->
190
+ - [ ] Action <!-- #action -->
191
+ - [ ] Adventure <!-- #adventure -->
192
+ - [ ] Animation <!-- #animation -->
193
+ - [ ] Biography <!-- #biography -->
194
+ - [ ] Comedy <!-- #comedy -->
195
+ - [ ] Crime <!-- #crime -->
196
+ - [ ] Documentary <!-- #documentary -->
197
+ - [ ] Drama <!-- #drama -->
198
+ - [ ] Family <!-- #family -->
199
+ - [ ] Fantasy <!-- #fantasy -->
200
+ - [ ] Film-Noir <!-- #film_noir -->
201
+ - [ ] History <!-- #history -->
202
+ - [ ] Horror <!-- #horror -->
203
+ - [ ] Music <!-- #music -->
204
+ - [ ] Musical <!-- #musical -->
205
+ - [ ] Mystery <!-- #mystery -->
206
+ - [ ] Romance <!-- #romance -->
207
+ - [ ] Sci-Fi <!-- #sci_fi -->
208
+ - [ ] Sport <!-- #sport -->
209
+ - [ ] Thriller <!-- #thriller -->
210
+ - [ ] War <!-- #war -->
211
+ - [ ] Western <!-- #western -->
212
+ <!-- /field -->
213
+
214
+ <!-- instructions ref="genres" -->
204
215
  Select all applicable genres from IMDB (up to 5).
205
- {% /instructions %}
216
+ <!-- /instructions -->
206
217
 
207
- {% field kind="string" id="original_language" label="Original Language" role="agent" %}{% /field %}
218
+ <!-- field kind="string" id="original_language" label="Original Language" --><!-- /field -->
208
219
 
209
- {% field kind="string_list" id="countries" label="Countries" role="agent" %}{% /field %}
220
+ <!-- field kind="string_list" id="countries" label="Countries" --><!-- /field -->
210
221
 
211
- {% instructions ref="countries" %}
222
+ <!-- instructions ref="countries" -->
212
223
  Production countries, one per line.
213
- {% /instructions %}
214
-
215
- {% /group %}
216
-
217
- ## Cast & Crew
224
+ <!-- /instructions -->
218
225
 
219
- {% group id="cast_crew" title="Cast & Crew" %}
226
+ <!-- /group -->
220
227
 
221
- {% field kind="table" id="lead_cast" label="Lead Cast" role="agent" minRows=1 maxRows=10 columnIds=["actor_name", "character_name"] columnTypes=["string", "string"] %}
228
+ <!-- group id="cast_crew" title="Cast & Crew" -->
222
229
 
223
- | Actor Name | Character Name |
224
- |------------|----------------|
230
+ <!-- field kind="table" id="lead_cast" columnIds=["actor_name", "character_name"] columnLabels=["Actor Name", "Character Name"] columnTypes=["string", "string"] label="Lead Cast" maxRows=10 minRows=1 --><!-- /field -->
225
231
 
226
- {% /field %}
227
-
228
- {% instructions ref="lead_cast" %}
232
+ <!-- instructions ref="lead_cast" -->
229
233
  Top-billed cast members with their character names.
230
234
  Example: Leonardo DiCaprio | Dom Cobb
231
- {% /instructions %}
235
+ <!-- /instructions -->
232
236
 
233
- {% field kind="string_list" id="writers" label="Writers" role="agent" %}{% /field %}
237
+ <!-- field kind="string_list" id="writers" label="Writers" --><!-- /field -->
234
238
 
235
- {% instructions ref="writers" %}
239
+ <!-- instructions ref="writers" -->
236
240
  Screenplay and story credits.
237
241
  Format: Name (credit type) Example: “Christopher Nolan (written by)”
238
- {% /instructions %}
242
+ <!-- /instructions -->
239
243
 
240
- {% field kind="string" id="cinematographer" label="Cinematographer" role="agent" %}{% /field %}
244
+ <!-- field kind="string" id="cinematographer" label="Cinematographer" --><!-- /field -->
241
245
 
242
- {% field kind="string" id="composer" label="Composer" role="agent" %}{% /field %}
246
+ <!-- field kind="string" id="composer" label="Composer" --><!-- /field -->
243
247
 
244
- {% instructions ref="composer" %}
248
+ <!-- instructions ref="composer" -->
245
249
  Film score composer (not soundtrack songs).
246
- {% /instructions %}
250
+ <!-- /instructions -->
247
251
 
248
- {% field kind="string_list" id="producers" label="Producers" role="agent" maxItems=5 %}{% /field %}
252
+ <!-- field kind="string_list" id="producers" label="Producers" maxItems=5 --><!-- /field -->
249
253
 
250
- {% instructions ref="producers" %}
254
+ <!-- instructions ref="producers" -->
251
255
  Key producers (limit to main credited producers).
252
256
  Format: Name (producer type) Example: “Emma Thomas (producer)”
253
- {% /instructions %}
254
-
255
- {% /group %}
257
+ <!-- /instructions -->
256
258
 
257
- ## Ratings
259
+ <!-- /group -->
258
260
 
259
- {% group id="ratings" title="Ratings" %}
261
+ <!-- group id="ratings" title="Ratings" -->
260
262
 
261
- {% field kind="table" id="ratings_table" label="Ratings" role="agent" required=true columnIds=["source", "score", "votes"] columnTypes=["string", "number", "number"] minRows=0 maxRows=6 %}
263
+ <!-- field kind="table" id="ratings_table" columnIds=["source", "score", "votes"] columnLabels=["Source", "Score", "Votes"] columnTypes=["string", "number", "number"] label="Ratings" maxRows=6 minRows=0 required=true --><!-- /field -->
262
264
 
263
- | Source | Score | Votes |
264
- |--------|-------|-------|
265
+ <!-- instructions ref="ratings_table" -->
266
+ Fill in scores and vote/review counts from each source:IMDB: Rating (1.0-10.0 scale), vote countRT Critics: Tomatometer (0-100%), review countRT Audience: Audience Score (0-100%), rating countMetacritic: Metascore (0-100)Letterboxd: Rating (0.5-5.0 scale)CinemaScore: Grade (A+ to F), leave votes empty
267
+ <!-- /instructions -->
265
268
 
266
- {% /field %}
267
- {% instructions ref="ratings_table" %}
268
- Fill in scores and vote/review counts from each source:
269
- - IMDB: Rating (1.0-10.0 scale), vote count
270
- - RT Critics: Tomatometer (0-100%), review count
271
- - RT Audience: Audience Score (0-100%), rating count
272
- - Metacritic: Metascore (0-100)
273
- - Letterboxd: Rating (0.5-5.0 scale)
274
- - CinemaScore: Grade (A+ to F), leave votes empty
269
+ <!-- field kind="string" id="rt_consensus" label="Critics Consensus" maxLength=500 --><!-- /field -->
275
270
 
276
- {% /instructions %}
277
-
278
- {% field kind="string" id="rt_consensus" label="Critics Consensus" role="agent" maxLength=500 %}{% /field %}
279
- {% instructions ref="rt_consensus" %}
271
+ <!-- instructions ref="rt_consensus" -->
280
272
  The official Rotten Tomatoes critics consensus statement, if available.
281
- {% /instructions %}
282
-
283
- {% /group %}
273
+ <!-- /instructions -->
284
274
 
285
- ## Box Office
275
+ <!-- /group -->
286
276
 
287
- {% group id="box_office" title="Box Office" %}
277
+ <!-- group id="box_office" title="Box Office" -->
288
278
 
289
- {% field kind="number" id="budget_millions" label="Budget ($M)" role="agent" min=0 %}{% /field %}
279
+ <!-- field kind="number" id="budget_millions" label="Budget ($M)" min=0 --><!-- /field -->
290
280
 
291
- {% instructions ref="budget_millions" %}
281
+ <!-- instructions ref="budget_millions" -->
292
282
  Production budget in millions USD. Example: 200 for $200M.
293
- {% /instructions %}
283
+ <!-- /instructions -->
294
284
 
295
- {% field kind="number" id="box_office_domestic_millions" label="Domestic Gross ($M)" role="agent" min=0 %}{% /field %}
285
+ <!-- field kind="number" id="box_office_domestic_millions" label="Domestic Gross ($M)" min=0 --><!-- /field -->
296
286
 
297
- {% instructions ref="box_office_domestic_millions" %}
287
+ <!-- instructions ref="box_office_domestic_millions" -->
298
288
  US/Canada theatrical gross in millions USD.
299
- {% /instructions %}
289
+ <!-- /instructions -->
300
290
 
301
- {% field kind="number" id="box_office_worldwide_millions" label="Worldwide Gross ($M)" role="agent" min=0 %}{% /field %}
291
+ <!-- field kind="number" id="box_office_worldwide_millions" label="Worldwide Gross ($M)" min=0 --><!-- /field -->
302
292
 
303
- {% instructions ref="box_office_worldwide_millions" %}
293
+ <!-- instructions ref="box_office_worldwide_millions" -->
304
294
  Global theatrical gross in millions USD.
305
- {% /instructions %}
295
+ <!-- /instructions -->
306
296
 
307
- {% field kind="number" id="opening_weekend_millions" label="Opening Weekend ($M)" role="agent" min=0 %}{% /field %}
297
+ <!-- field kind="number" id="opening_weekend_millions" label="Opening Weekend ($M)" min=0 --><!-- /field -->
308
298
 
309
- {% instructions ref="opening_weekend_millions" %}
299
+ <!-- instructions ref="opening_weekend_millions" -->
310
300
  US opening weekend gross in millions USD.
311
- {% /instructions %}
312
-
313
- {% /group %}
314
-
315
- ## Technical Specifications
316
-
317
- {% group id="technical_specs" title="Technical Specifications" %}
318
-
319
- {% field kind="single_select" id="aspect_ratio" label="Aspect Ratio" role="agent" %}
320
-
321
- - [ ] 1.33:1 (Academy) {% #ratio_133 %}
322
- - [ ] 1.66:1 {% #ratio_166 %}
323
- - [ ] 1.78:1 (16:9) {% #ratio_178 %}
324
- - [ ] 1.85:1 (Flat) {% #ratio_185 %}
325
- - [ ] 2.00:1 (Univisium) {% #ratio_200 %}
326
- - [ ] 2.20:1 (70mm) {% #ratio_220 %}
327
- - [ ] 2.35:1 (Scope) {% #ratio_235 %}
328
- - [ ] 2.39:1 (Scope) {% #ratio_239 %}
329
- - [ ] 2.76:1 (Ultra Panavision) {% #ratio_276 %}
330
- - [ ] 1.43:1 (IMAX) {% #ratio_143 %}
331
- - [ ] 1.90:1 (IMAX Digital) {% #ratio_190 %}
332
- - [ ] Variable {% #ratio_variable %}
333
-
334
- {% /field %}
335
-
336
- {% field kind="single_select" id="color_format" label="Color" role="agent" %}
337
-
338
- - [ ] Color {% #color %}
339
- - [ ] Black & White {% #bw %}
340
- - [ ] Mixed/Partial Color {% #mixed %}
341
-
342
- {% /field %}
343
-
344
- {% field kind="string" id="sound_mix" label="Sound Mix" role="agent" %}{% /field %}
345
-
346
- {% instructions ref="sound_mix" %}
301
+ <!-- /instructions -->
302
+
303
+ <!-- /group -->
304
+
305
+ <!-- group id="technical_specs" title="Technical Specifications" -->
306
+
307
+ <!-- field kind="single_select" id="aspect_ratio" label="Aspect Ratio" -->
308
+ - [ ] 1.33:1 (Academy) <!-- #ratio_133 -->
309
+ - [ ] 1.66:1 <!-- #ratio_166 -->
310
+ - [ ] 1.78:1 (16:9) <!-- #ratio_178 -->
311
+ - [ ] 1.85:1 (Flat) <!-- #ratio_185 -->
312
+ - [ ] 2.00:1 (Univisium) <!-- #ratio_200 -->
313
+ - [ ] 2.20:1 (70mm) <!-- #ratio_220 -->
314
+ - [ ] 2.35:1 (Scope) <!-- #ratio_235 -->
315
+ - [ ] 2.39:1 (Scope) <!-- #ratio_239 -->
316
+ - [ ] 2.76:1 (Ultra Panavision) <!-- #ratio_276 -->
317
+ - [ ] 1.43:1 (IMAX) <!-- #ratio_143 -->
318
+ - [ ] 1.90:1 (IMAX Digital) <!-- #ratio_190 -->
319
+ - [ ] Variable <!-- #ratio_variable -->
320
+ <!-- /field -->
321
+
322
+ <!-- field kind="single_select" id="color_format" label="Color" -->
323
+ - [ ] Color <!-- #color -->
324
+ - [ ] Black & White <!-- #bw -->
325
+ - [ ] Mixed/Partial Color <!-- #mixed -->
326
+ <!-- /field -->
327
+
328
+ <!-- field kind="string" id="sound_mix" label="Sound Mix" --><!-- /field -->
329
+
330
+ <!-- instructions ref="sound_mix" -->
347
331
  Primary sound format (e.g., “Dolby Atmos”, “DTS”, “Dolby Digital”).
348
- {% /instructions %}
332
+ <!-- /instructions -->
349
333
 
350
- {% field kind="string" id="camera" label="Camera" role="agent" %}{% /field %}
334
+ <!-- field kind="string" id="camera" label="Camera" --><!-- /field -->
351
335
 
352
- {% instructions ref="camera" %}
336
+ <!-- instructions ref="camera" -->
353
337
  Primary camera system used (e.g., “Arri Alexa 65”, “IMAX 15-perf”, “Panavision
354
338
  Panaflex”).
355
- {% /instructions %}
356
-
357
- {% /group %}
358
-
359
- ## Streaming Availability
360
-
361
- {% group id="streaming_availability" title="Streaming Availability (US)" %}
362
-
363
- {% field kind="multi_select" id="streaming_subscription" label="Streaming (Subscription)" role="agent" %}
364
-
365
- - [ ] Netflix {% #netflix %}
366
- - [ ] Amazon Prime Video {% #prime %}
367
- - [ ] Disney+ {% #disney %}
368
- - [ ] Max (HBO) {% #max %}
369
- - [ ] Hulu {% #hulu %}
370
- - [ ] Apple TV+ {% #apple %}
371
- - [ ] Paramount+ {% #paramount %}
372
- - [ ] Peacock {% #peacock %}
373
- - [ ] MGM+ {% #mgm %}
374
- - [ ] Criterion Channel {% #criterion %}
375
- - [ ] MUBI {% #mubi %}
376
- - [ ] Tubi (Free) {% #tubi %}
377
- - [ ] Pluto TV (Free) {% #pluto %}
378
-
379
- {% /field %}
380
-
381
- {% instructions ref="streaming_subscription" %}
339
+ <!-- /instructions -->
340
+
341
+ <!-- /group -->
342
+
343
+ <!-- group id="streaming_availability" title="Streaming Availability (US)" -->
344
+
345
+ <!-- field kind="multi_select" id="streaming_subscription" label="Streaming (Subscription)" -->
346
+ - [ ] Netflix <!-- #netflix -->
347
+ - [ ] Amazon Prime Video <!-- #prime -->
348
+ - [ ] Disney+ <!-- #disney -->
349
+ - [ ] Max (HBO) <!-- #max -->
350
+ - [ ] Hulu <!-- #hulu -->
351
+ - [ ] Apple TV+ <!-- #apple -->
352
+ - [ ] Paramount+ <!-- #paramount -->
353
+ - [ ] Peacock <!-- #peacock -->
354
+ - [ ] MGM+ <!-- #mgm -->
355
+ - [ ] Criterion Channel <!-- #criterion -->
356
+ - [ ] MUBI <!-- #mubi -->
357
+ - [ ] Tubi (Free) <!-- #tubi -->
358
+ - [ ] Pluto TV (Free) <!-- #pluto -->
359
+ <!-- /field -->
360
+
361
+ <!-- instructions ref="streaming_subscription" -->
382
362
  Select all platforms where this film is currently available to stream (subscription or
383
363
  free). Check JustWatch for current availability.
384
- {% /instructions %}
385
-
386
- {% field kind="checkboxes" id="availability_flags" label="Other Availability" role="agent" checkboxMode="simple" %}
387
-
388
- - [ ] Available for digital rental {% #rental %}
389
- - [ ] Available for digital purchase {% #purchase %}
390
- - [ ] Physical media (Blu-ray/DVD) {% #physical %}
391
- - [ ] 4K UHD available {% #uhd_4k %}
392
-
393
- {% /field %}
394
-
395
- {% /group %}
396
-
397
- ## Content & Themes
398
-
399
- {% group id="content_themes" title="Content & Themes" %}
400
-
401
- {% field kind="checkboxes" id="content_warnings" label="Content Warnings" role="agent" checkboxMode="simple" %}
402
-
403
- - [ ] Intense violence {% #violence %}
404
- - [ ] Gore/disturbing imagery {% #gore %}
405
- - [ ] Sexual content {% #sexual %}
406
- - [ ] Nudity {% #nudity %}
407
- - [ ] Strong language {% #language %}
408
- - [ ] Drug/alcohol use {% #drugs %}
409
- - [ ] Frightening scenes {% #frightening %}
410
- - [ ] Flashing/strobe effects {% #flashing %}
411
-
412
- {% /field %}
413
-
414
- {% instructions ref="content_warnings" %}
364
+ <!-- /instructions -->
365
+
366
+ <!-- field kind="checkboxes" id="availability_flags" checkboxMode="simple" label="Other Availability" -->
367
+ - [ ] Available for digital rental <!-- #rental -->
368
+ - [ ] Available for digital purchase <!-- #purchase -->
369
+ - [ ] Physical media (Blu-ray/DVD) <!-- #physical -->
370
+ - [ ] 4K UHD available <!-- #uhd_4k -->
371
+ <!-- /field -->
372
+
373
+ <!-- /group -->
374
+
375
+ <!-- group id="content_themes" title="Content & Themes" -->
376
+
377
+ <!-- field kind="checkboxes" id="content_warnings" checkboxMode="simple" label="Content Warnings" -->
378
+ - [ ] Intense violence <!-- #violence -->
379
+ - [ ] Gore/disturbing imagery <!-- #gore -->
380
+ - [ ] Sexual content <!-- #sexual -->
381
+ - [ ] Nudity <!-- #nudity -->
382
+ - [ ] Strong language <!-- #language -->
383
+ - [ ] Drug/alcohol use <!-- #drugs -->
384
+ - [ ] Frightening scenes <!-- #frightening -->
385
+ - [ ] Flashing/strobe effects <!-- #flashing -->
386
+ <!-- /field -->
387
+
388
+ <!-- instructions ref="content_warnings" -->
415
389
  Check any content warnings that apply.
416
390
  Use IMDB Parents Guide as reference.
417
- {% /instructions %}
391
+ <!-- /instructions -->
418
392
 
419
- {% field kind="string_list" id="themes" label="Key Themes" role="agent" maxItems=5 %}{% /field %}
393
+ <!-- field kind="string_list" id="themes" label="Key Themes" maxItems=5 --><!-- /field -->
420
394
 
421
- {% instructions ref="themes" %}
395
+ <!-- instructions ref="themes" -->
422
396
  Major themes explored in the film (e.g., “redemption”, “family”, “identity”, “war”).
423
- {% /instructions %}
424
-
425
- {% /group %}
397
+ <!-- /instructions -->
426
398
 
427
- ## Summary & Legacy
399
+ <!-- /group -->
428
400
 
429
- {% group id="summary" title="Summary" %}
401
+ <!-- group id="summary" title="Summary" -->
430
402
 
431
- {% field kind="string" id="logline" label="One-Line Summary" role="agent" maxLength=300 %}{% /field %}
403
+ <!-- field kind="string" id="logline" label="One-Line Summary" maxLength=300 --><!-- /field -->
432
404
 
433
- {% instructions ref="logline" %}
405
+ <!-- instructions ref="logline" -->
434
406
  Brief plot summary in 1-2 sentences, no spoilers.
435
- {% /instructions %}
436
-
437
- {% field kind="table" id="notable_awards" label="Notable Awards" role="agent" columnIds=["award", "category", "year"] columnTypes=["string", "string", "year"] %}
407
+ <!-- /instructions -->
438
408
 
439
- | Award | Category | Year |
440
- |-------|----------|------|
409
+ <!-- field kind="table" id="notable_awards" columnIds=["award", "category", "year"] columnLabels=["Award", "Category", "Year"] columnTypes=["string", "string", "year"] label="Notable Awards" --><!-- /field -->
441
410
 
442
- {% /field %}
443
-
444
- {% instructions ref="notable_awards" %}
411
+ <!-- instructions ref="notable_awards" -->
445
412
  Major awards won. Example: Oscar | Best Picture | 1995
446
- {% /instructions %}
447
-
448
- {% field kind="table" id="notable_quotes" label="Notable Critic Quotes" role="agent" maxRows=3 columnIds=["quote", "critic", "publication"] columnTypes=["string", "string", "string"] %}
413
+ <!-- /instructions -->
449
414
 
450
- | Quote | Critic | Publication |
451
- |-------|--------|-------------|
415
+ <!-- field kind="table" id="notable_quotes" columnIds=["quote", "critic", "publication"] columnLabels=["Quote", "Critic", "Publication"] columnTypes=["string", "string", "string"] label="Notable Critic Quotes" maxRows=3 --><!-- /field -->
452
416
 
453
- {% /field %}
454
-
455
- {% instructions ref="notable_quotes" %}
417
+ <!-- instructions ref="notable_quotes" -->
456
418
  2-3 memorable critic quotes that capture reception.
457
- {% /instructions %}
419
+ <!-- /instructions -->
458
420
 
459
- {% /group %}
421
+ <!-- /group -->
460
422
 
461
- {% group id="cultural_legacy" title="Cultural Legacy" %}
423
+ <!-- group id="cultural_legacy" title="Cultural Legacy" -->
462
424
 
463
- {% field kind="string" id="cultural_impact" label="Cultural Impact" role="agent" maxLength=500 %}{% /field %}
425
+ <!-- field kind="string" id="cultural_impact" label="Cultural Impact" maxLength=500 --><!-- /field -->
464
426
 
465
- {% instructions ref="cultural_impact" %}
427
+ <!-- instructions ref="cultural_impact" -->
466
428
  Brief description of the film’s cultural significance, influence, or legacy (1-3
467
429
  sentences). Leave empty for recent releases without established legacy.
468
- {% /instructions %}
430
+ <!-- /instructions -->
469
431
 
470
- {% field kind="string_list" id="similar_films" label="Similar Films" role="agent" maxItems=5 %}{% /field %}
432
+ <!-- field kind="string_list" id="similar_films" label="Similar Films" maxItems=5 --><!-- /field -->
471
433
 
472
- {% instructions ref="similar_films" %}
434
+ <!-- instructions ref="similar_films" -->
473
435
  Films with similar themes, style, or appeal.
474
436
  One per line.
475
- {% /instructions %}
437
+ <!-- /instructions -->
438
+
439
+ <!-- /group -->
440
+
441
+ <!-- /form -->
442
+
476
443
 
477
- {% /group %}
478
444
 
479
- {% /form %}