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
@@ -119,7 +119,7 @@ turns:
119
119
  test: na
120
120
  after:
121
121
  required_issue_count: 2
122
- markdown_sha256: 6150f47670d0e52b3ee790d41e3e4f69b67bcf2a2855e917510dd3af059094f7
122
+ markdown_sha256: 49988e793b98572daf567414d125e9ab2cc0889b6c19fcca1b5f6362f2e8d82d
123
123
  answered_field_count: 10
124
124
  skipped_field_count: 0
125
125
  context:
@@ -172,7 +172,7 @@ turns:
172
172
  `{ op: "skip_field", fieldId: "...", reason: "Could not find verified data" }`
173
173
 
174
174
 
175
- # Instructions for agent role
175
+ # Role guidance
176
176
  Complete the remaining fields based on the provided context.
177
177
 
178
178
  # Field-specific instructions
@@ -193,177 +193,183 @@ turns:
193
193
  ```markdown
194
194
  ---
195
195
  markform:
196
- spec: "MF/0.1"
197
- run_mode: "interactive"
198
- role_instructions:
199
- user: "Fill in the fields you have direct knowledge of."
200
- agent: "Complete the remaining fields based on the provided context."
196
+ spec: MF/0.1
197
+ title: Simple Test Form
198
+ description: Fully interactive demo - no LLM required. Demonstrates all Markform field types.
199
+ run_mode: interactive
200
+ roles:
201
+ - user
202
+ role_instructions:
203
+ user: Fill in all fields in this form.
201
204
  ---
202
205
 
203
- {% form id="simple_test" title="Simple Test Form" %}
206
+ <!-- form id="simple_test" title="Simple Test Form" -->
204
207
 
205
- {% description ref="simple_test" %}
208
+ <!-- description ref="simple_test" -->
206
209
  A fully interactive form demonstrating all Markform v0.1 field types.
207
210
  Fill all fields using interactive prompts - no LLM API key needed.
208
- {% /description %}
211
+ <!-- /description -->
209
212
 
210
- {% group id="basic_fields" title="Basic Fields" %}
213
+ <!-- group id="basic_fields" title="Basic Fields" -->
211
214
 
212
- {% field kind="string" id="name" role="user" examples=["John Smith", "Jane Doe"] label="Name" maxLength=50 minLength=2 placeholder="Enter your name" required=true %}{% /field %}
215
+ <!-- field kind="string" id="name" role="user" examples=["John Smith", "Jane Doe"] label="Name" maxLength=50 minLength=2 placeholder="Enter your name" required=true --><!-- /field -->
213
216
 
214
- {% instructions ref="name" %}
217
+ <!-- instructions ref="name" -->
215
218
  Enter your full name (2-50 characters).
216
- {% /instructions %}
219
+ <!-- /instructions -->
217
220
 
218
- {% field kind="string" id="email" role="user" examples=["alice@company.com", "bob@example.org"] label="Email" pattern="^[^@]+@[^@]+\\.[^@]+$" placeholder="email@example.com" required=true %}{% /field %}
221
+ <!-- field kind="string" id="email" role="user" examples=["alice@company.com", "bob@example.org"] label="Email" pattern="^[^@]+@[^@]+\\.[^@]+$" placeholder="email@example.com" required=true --><!-- /field -->
219
222
 
220
- {% field kind="number" id="age" role="user" examples=["18", "30", "45"] integer=true label="Age" max=150 min=0 placeholder="25" required=true %}{% /field %}
223
+ <!-- field kind="number" id="age" role="user" examples=["18", "30", "45"] integer=true label="Age" max=150 min=0 placeholder="25" required=true --><!-- /field -->
221
224
 
222
- {% field kind="number" id="score" role="user" examples=["75.0", "90.5", "100.0"] label="Score" max=100 min=0 placeholder="85.5" %}{% /field %}
225
+ <!-- field kind="number" id="score" role="user" examples=["75.0", "90.5", "100.0"] label="Score" max=100 min=0 placeholder="85.5" --><!-- /field -->
223
226
 
224
- {% instructions ref="score" %}
227
+ <!-- instructions ref="score" -->
225
228
  Enter a score between 0 and 100 (optional).
226
- {% /instructions %}
229
+ <!-- /instructions -->
227
230
 
228
- {% /group %}
231
+ <!-- /group -->
229
232
 
230
- {% group id="list_fields" title="List Fields" %}
233
+ <!-- group id="list_fields" title="List Fields" -->
231
234
 
232
- {% field kind="string_list" id="tags" role="user" itemMinLength=2 label="Tags" maxItems=5 minItems=1 required=true uniqueItems=true %}{% /field %}
235
+ <!-- field kind="string_list" id="tags" role="user" itemMinLength=2 label="Tags" maxItems=5 minItems=1 required=true uniqueItems=true --><!-- /field -->
233
236
 
234
- {% instructions ref="tags" %}
237
+ <!-- instructions ref="tags" -->
235
238
  Add 1-5 unique tags (each at least 2 characters).
236
- {% /instructions %}
239
+ <!-- /instructions -->
237
240
 
238
- {% /group %}
241
+ <!-- /group -->
239
242
 
240
- {% group id="selection_fields" title="Selection Fields" %}
243
+ <!-- group id="selection_fields" title="Selection Fields" -->
241
244
 
242
- {% field kind="single_select" id="priority" role="user" label="Priority" required=true %}
243
- - [ ] Low {% #low %}
244
- - [ ] Medium {% #medium %}
245
- - [ ] High {% #high %}
246
- {% /field %}
245
+ <!-- field kind="single_select" id="priority" role="user" label="Priority" required=true -->
246
+ - [ ] Low <!-- #low -->
247
+ - [ ] Medium <!-- #medium -->
248
+ - [ ] High <!-- #high -->
249
+ <!-- /field -->
247
250
 
248
- {% field kind="multi_select" id="categories" role="user" label="Categories" maxSelections=3 minSelections=1 required=true %}
249
- - [ ] Frontend {% #frontend %}
250
- - [ ] Backend {% #backend %}
251
- - [ ] Database {% #database %}
252
- - [ ] DevOps {% #devops %}
253
- {% /field %}
251
+ <!-- field kind="multi_select" id="categories" role="user" label="Categories" maxSelections=3 minSelections=1 required=true -->
252
+ - [ ] Frontend <!-- #frontend -->
253
+ - [ ] Backend <!-- #backend -->
254
+ - [ ] Database <!-- #database -->
255
+ - [ ] DevOps <!-- #devops -->
256
+ <!-- /field -->
254
257
 
255
- {% /group %}
258
+ <!-- /group -->
256
259
 
257
- {% group id="checkbox_fields" title="Checkbox Fields" %}
260
+ <!-- group id="checkbox_fields" title="Checkbox Fields" -->
258
261
 
259
- {% field kind="checkboxes" id="tasks_multi" role="user" label="Tasks (Multi Mode)" required=true %}
260
- - [ ] Research {% #research %}
261
- - [ ] Design {% #design %}
262
- - [ ] Implement {% #implement %}
263
- - [ ] Test {% #test %}
264
- {% /field %}
262
+ <!-- field kind="checkboxes" id="tasks_multi" role="user" label="Tasks (Multi Mode)" required=true -->
263
+ - [ ] Research <!-- #research -->
264
+ - [ ] Design <!-- #design -->
265
+ - [ ] Implement <!-- #implement -->
266
+ - [ ] Test <!-- #test -->
267
+ <!-- /field -->
265
268
 
266
- {% instructions ref="tasks_multi" %}
269
+ <!-- instructions ref="tasks_multi" -->
267
270
  Track task progress.
268
271
  All must reach done or na state to complete.
269
- {% /instructions %}
272
+ <!-- /instructions -->
270
273
 
271
- {% field kind="checkboxes" id="tasks_simple" role="user" checkboxMode="simple" label="Agreements (Simple Mode)" required=true %}
272
- - [ ] I have read the guidelines {% #read_guidelines %}
273
- - [ ] I agree to the terms {% #agree_terms %}
274
- {% /field %}
274
+ <!-- field kind="checkboxes" id="tasks_simple" role="user" checkboxMode="simple" label="Agreements (Simple Mode)" required=true -->
275
+ - [ ] I have read the guidelines <!-- #read_guidelines -->
276
+ - [ ] I agree to the terms <!-- #agree_terms -->
277
+ <!-- /field -->
275
278
 
276
- {% field kind="checkboxes" id="confirmations" role="user" checkboxMode="explicit" label="Confirmations (Explicit Mode)" required=true %}
277
- - [ ] Data has been backed up {% #backed_up %}
278
- - [ ] Stakeholders notified {% #notified %}
279
- {% /field %}
279
+ <!-- field kind="checkboxes" id="confirmations" role="user" checkboxMode="explicit" label="Confirmations (Explicit Mode)" required=true -->
280
+ - [ ] Data has been backed up <!-- #backed_up -->
281
+ - [ ] Stakeholders notified <!-- #notified -->
282
+ <!-- /field -->
280
283
 
281
- {% instructions ref="confirmations" %}
284
+ <!-- instructions ref="confirmations" -->
282
285
  Answer yes or no for each confirmation.
283
286
  All must be explicitly answered.
284
- {% /instructions %}
287
+ <!-- /instructions -->
285
288
 
286
- {% /group %}
289
+ <!-- /group -->
287
290
 
288
- {% group id="url_fields" title="URL Fields" %}
291
+ <!-- group id="url_fields" title="URL Fields" -->
289
292
 
290
- {% field kind="url" id="website" role="user" examples=["https://github.com/user/repo", "https://company.com"] label="Website" placeholder="https://example.com" required=true %}{% /field %}
293
+ <!-- field kind="url" id="website" role="user" examples=["https://github.com/user/repo", "https://company.com"] label="Website" placeholder="https://example.com" required=true --><!-- /field -->
291
294
 
292
- {% instructions ref="website" %}
295
+ <!-- instructions ref="website" -->
293
296
  Enter your website URL (must be http or https).
294
- {% /instructions %}
297
+ <!-- /instructions -->
295
298
 
296
- {% field kind="url_list" id="references" role="user" examples=["https://wikipedia.org/wiki/Example", "https://docs.github.com/en"] label="References" maxItems=5 minItems=1 placeholder="https://docs.example.com" uniqueItems=true %}{% /field %}
299
+ <!-- field kind="url_list" id="references" role="user" examples=["https://wikipedia.org/wiki/Example", "https://docs.github.com/en"] label="References" maxItems=5 minItems=1 placeholder="https://docs.example.com" uniqueItems=true --><!-- /field -->
297
300
 
298
- {% instructions ref="references" %}
301
+ <!-- instructions ref="references" -->
299
302
  Add 1-5 unique reference URLs for sources or documentation.
300
- {% /instructions %}
303
+ <!-- /instructions -->
301
304
 
302
- {% /group %}
305
+ <!-- /group -->
303
306
 
304
- {% group id="date_fields" title="Date and Year Fields" %}
307
+ <!-- group id="date_fields" title="Date and Year Fields" -->
305
308
 
306
- {% field kind="date" id="event_date" role="user" label="Event Date" max="2030-12-31" min="2020-01-01" required=true %}{% /field %}
309
+ <!-- field kind="date" id="event_date" role="user" label="Event Date" max="2030-12-31" min="2020-01-01" required=true --><!-- /field -->
307
310
 
308
- {% instructions ref="event_date" %}
311
+ <!-- instructions ref="event_date" -->
309
312
  Enter the event date (YYYY-MM-DD format, between 2020 and 2030).
310
- {% /instructions %}
313
+ <!-- /instructions -->
311
314
 
312
- {% field kind="year" id="founded_year" role="user" label="Founded Year" max=2030 min=1900 required=true %}{% /field %}
315
+ <!-- field kind="year" id="founded_year" role="user" label="Founded Year" max=2030 min=1900 required=true --><!-- /field -->
313
316
 
314
- {% instructions ref="founded_year" %}
317
+ <!-- instructions ref="founded_year" -->
315
318
  Enter the year the company was founded (1900-2030).
316
- {% /instructions %}
319
+ <!-- /instructions -->
317
320
 
318
- {% /group %}
321
+ <!-- /group -->
319
322
 
320
- {% group id="table_fields" title="Table Fields" %}
323
+ <!-- group id="table_fields" title="Table Fields" -->
321
324
 
322
- {% field kind="table" id="team_members" role="user" columnIds=["name", "role", "start_date"] columnLabels=["Name", "Role", "Start Date"] columnTypes=[{type: "string", required: true}, "string", "date"] label="Team Members" maxRows=5 minRows=0 %}{% /field %}
325
+ <!-- field kind="table" id="team_members" role="user" columnIds=["name", "role", "start_date"] columnLabels=["Name", "Role", "Start Date"] columnTypes=[{type: "string", required: true}, "string", "date"] label="Team Members" maxRows=5 minRows=0 --><!-- /field -->
323
326
 
324
- {% instructions ref="team_members" %}
327
+ <!-- instructions ref="team_members" -->
325
328
  Add team members with their name (required), role, and start date.
326
- {% /instructions %}
329
+ <!-- /instructions -->
327
330
 
328
- {% field kind="table" id="project_tasks" role="user" columnIds=["task", "estimate_hrs", "link"] columnLabels=["Task", "Estimate (hrs)", "Link"] columnTypes=[{type: "string", required: true}, "number", "url"] label="Project Tasks" maxRows=10 minRows=0 %}{% /field %}
331
+ <!-- field kind="table" id="project_tasks" role="user" columnIds=["task", "estimate_hrs", "link"] columnLabels=["Task", "Estimate (hrs)", "Link"] columnTypes=[{type: "string", required: true}, "number", "url"] label="Project Tasks" maxRows=10 minRows=0 --><!-- /field -->
329
332
 
330
- {% instructions ref="project_tasks" %}
333
+ <!-- instructions ref="project_tasks" -->
331
334
  Optionally add project tasks with estimated hours and reference links.
332
- {% /instructions %}
335
+ <!-- /instructions -->
333
336
 
334
- {% /group %}
337
+ <!-- /group -->
335
338
 
336
- {% group id="optional_fields" title="Optional Fields" %}
339
+ <!-- group id="optional_fields" title="Optional Fields" -->
337
340
 
338
- {% field kind="string" id="notes" role="user" label="Notes" %}{% /field %}
341
+ <!-- field kind="string" id="notes" role="user" label="Notes" --><!-- /field -->
339
342
 
340
- {% instructions ref="notes" %}
343
+ <!-- instructions ref="notes" -->
341
344
  Add any relevant notes or observations (optional).
342
- {% /instructions %}
345
+ <!-- /instructions -->
343
346
 
344
- {% field kind="number" id="optional_number" role="user" label="Optional Number" %}{% /field %}
347
+ <!-- field kind="number" id="optional_number" role="user" label="Optional Number" --><!-- /field -->
345
348
 
346
- {% field kind="url" id="related_url" role="user" label="Related URL" %}{% /field %}
349
+ <!-- field kind="url" id="related_url" role="user" label="Related URL" --><!-- /field -->
347
350
 
348
- {% instructions ref="related_url" %}
351
+ <!-- instructions ref="related_url" -->
349
352
  Optionally add a URL to related documentation or resources.
350
- {% /instructions %}
353
+ <!-- /instructions -->
351
354
 
352
- {% field kind="date" id="optional_date" role="user" label="Optional Date" %}{% /field %}
355
+ <!-- field kind="date" id="optional_date" role="user" label="Optional Date" --><!-- /field -->
353
356
 
354
- {% instructions ref="optional_date" %}
357
+ <!-- instructions ref="optional_date" -->
355
358
  Optionally add a date (YYYY-MM-DD format).
356
- {% /instructions %}
359
+ <!-- /instructions -->
357
360
 
358
- {% field kind="year" id="optional_year" role="user" label="Optional Year" %}{% /field %}
361
+ <!-- field kind="year" id="optional_year" role="user" label="Optional Year" --><!-- /field -->
359
362
 
360
- {% instructions ref="optional_year" %}
363
+ <!-- instructions ref="optional_year" -->
361
364
  Optionally add a year.
362
- {% /instructions %}
365
+ <!-- /instructions -->
366
+
367
+ <!-- /group -->
368
+
369
+ <!-- /form -->
370
+
363
371
 
364
- {% /group %}
365
372
 
366
- {% /form %}
367
373
 
368
374
  ```
369
375
 
@@ -492,7 +498,7 @@ turns:
492
498
  `{ op: "skip_field", fieldId: "...", reason: "Could not find verified data" }`
493
499
 
494
500
 
495
- # Instructions for agent role
501
+ # Role guidance
496
502
  Complete the remaining fields based on the provided context.
497
503
 
498
504
  # Field-specific instructions
@@ -513,177 +519,183 @@ turns:
513
519
  ```markdown
514
520
  ---
515
521
  markform:
516
- spec: "MF/0.1"
517
- run_mode: "interactive"
518
- role_instructions:
519
- user: "Fill in the fields you have direct knowledge of."
520
- agent: "Complete the remaining fields based on the provided context."
522
+ spec: MF/0.1
523
+ title: Simple Test Form
524
+ description: Fully interactive demo - no LLM required. Demonstrates all Markform field types.
525
+ run_mode: interactive
526
+ roles:
527
+ - user
528
+ role_instructions:
529
+ user: Fill in all fields in this form.
521
530
  ---
522
531
 
523
- {% form id="simple_test" title="Simple Test Form" %}
532
+ <!-- form id="simple_test" title="Simple Test Form" -->
524
533
 
525
- {% description ref="simple_test" %}
534
+ <!-- description ref="simple_test" -->
526
535
  A fully interactive form demonstrating all Markform v0.1 field types.
527
536
  Fill all fields using interactive prompts - no LLM API key needed.
528
- {% /description %}
537
+ <!-- /description -->
529
538
 
530
- {% group id="basic_fields" title="Basic Fields" %}
539
+ <!-- group id="basic_fields" title="Basic Fields" -->
531
540
 
532
- {% field kind="string" id="name" role="user" examples=["John Smith", "Jane Doe"] label="Name" maxLength=50 minLength=2 placeholder="Enter your name" required=true %}{% /field %}
541
+ <!-- field kind="string" id="name" role="user" examples=["John Smith", "Jane Doe"] label="Name" maxLength=50 minLength=2 placeholder="Enter your name" required=true --><!-- /field -->
533
542
 
534
- {% instructions ref="name" %}
543
+ <!-- instructions ref="name" -->
535
544
  Enter your full name (2-50 characters).
536
- {% /instructions %}
545
+ <!-- /instructions -->
537
546
 
538
- {% field kind="string" id="email" role="user" examples=["alice@company.com", "bob@example.org"] label="Email" pattern="^[^@]+@[^@]+\\.[^@]+$" placeholder="email@example.com" required=true %}{% /field %}
547
+ <!-- field kind="string" id="email" role="user" examples=["alice@company.com", "bob@example.org"] label="Email" pattern="^[^@]+@[^@]+\\.[^@]+$" placeholder="email@example.com" required=true --><!-- /field -->
539
548
 
540
- {% field kind="number" id="age" role="user" examples=["18", "30", "45"] integer=true label="Age" max=150 min=0 placeholder="25" required=true %}{% /field %}
549
+ <!-- field kind="number" id="age" role="user" examples=["18", "30", "45"] integer=true label="Age" max=150 min=0 placeholder="25" required=true --><!-- /field -->
541
550
 
542
- {% field kind="number" id="score" role="user" examples=["75.0", "90.5", "100.0"] label="Score" max=100 min=0 placeholder="85.5" %}{% /field %}
551
+ <!-- field kind="number" id="score" role="user" examples=["75.0", "90.5", "100.0"] label="Score" max=100 min=0 placeholder="85.5" --><!-- /field -->
543
552
 
544
- {% instructions ref="score" %}
553
+ <!-- instructions ref="score" -->
545
554
  Enter a score between 0 and 100 (optional).
546
- {% /instructions %}
555
+ <!-- /instructions -->
547
556
 
548
- {% /group %}
557
+ <!-- /group -->
549
558
 
550
- {% group id="list_fields" title="List Fields" %}
559
+ <!-- group id="list_fields" title="List Fields" -->
551
560
 
552
- {% field kind="string_list" id="tags" role="user" itemMinLength=2 label="Tags" maxItems=5 minItems=1 required=true uniqueItems=true %}{% /field %}
561
+ <!-- field kind="string_list" id="tags" role="user" itemMinLength=2 label="Tags" maxItems=5 minItems=1 required=true uniqueItems=true --><!-- /field -->
553
562
 
554
- {% instructions ref="tags" %}
563
+ <!-- instructions ref="tags" -->
555
564
  Add 1-5 unique tags (each at least 2 characters).
556
- {% /instructions %}
565
+ <!-- /instructions -->
557
566
 
558
- {% /group %}
567
+ <!-- /group -->
559
568
 
560
- {% group id="selection_fields" title="Selection Fields" %}
569
+ <!-- group id="selection_fields" title="Selection Fields" -->
561
570
 
562
- {% field kind="single_select" id="priority" role="user" label="Priority" required=true %}
563
- - [ ] Low {% #low %}
564
- - [ ] Medium {% #medium %}
565
- - [ ] High {% #high %}
566
- {% /field %}
571
+ <!-- field kind="single_select" id="priority" role="user" label="Priority" required=true -->
572
+ - [ ] Low <!-- #low -->
573
+ - [ ] Medium <!-- #medium -->
574
+ - [ ] High <!-- #high -->
575
+ <!-- /field -->
567
576
 
568
- {% field kind="multi_select" id="categories" role="user" label="Categories" maxSelections=3 minSelections=1 required=true %}
569
- - [ ] Frontend {% #frontend %}
570
- - [ ] Backend {% #backend %}
571
- - [ ] Database {% #database %}
572
- - [ ] DevOps {% #devops %}
573
- {% /field %}
577
+ <!-- field kind="multi_select" id="categories" role="user" label="Categories" maxSelections=3 minSelections=1 required=true -->
578
+ - [ ] Frontend <!-- #frontend -->
579
+ - [ ] Backend <!-- #backend -->
580
+ - [ ] Database <!-- #database -->
581
+ - [ ] DevOps <!-- #devops -->
582
+ <!-- /field -->
574
583
 
575
- {% /group %}
584
+ <!-- /group -->
576
585
 
577
- {% group id="checkbox_fields" title="Checkbox Fields" %}
586
+ <!-- group id="checkbox_fields" title="Checkbox Fields" -->
578
587
 
579
- {% field kind="checkboxes" id="tasks_multi" role="user" label="Tasks (Multi Mode)" required=true %}
580
- - [ ] Research {% #research %}
581
- - [ ] Design {% #design %}
582
- - [ ] Implement {% #implement %}
583
- - [ ] Test {% #test %}
584
- {% /field %}
588
+ <!-- field kind="checkboxes" id="tasks_multi" role="user" label="Tasks (Multi Mode)" required=true -->
589
+ - [ ] Research <!-- #research -->
590
+ - [ ] Design <!-- #design -->
591
+ - [ ] Implement <!-- #implement -->
592
+ - [ ] Test <!-- #test -->
593
+ <!-- /field -->
585
594
 
586
- {% instructions ref="tasks_multi" %}
595
+ <!-- instructions ref="tasks_multi" -->
587
596
  Track task progress.
588
597
  All must reach done or na state to complete.
589
- {% /instructions %}
598
+ <!-- /instructions -->
590
599
 
591
- {% field kind="checkboxes" id="tasks_simple" role="user" checkboxMode="simple" label="Agreements (Simple Mode)" required=true %}
592
- - [ ] I have read the guidelines {% #read_guidelines %}
593
- - [ ] I agree to the terms {% #agree_terms %}
594
- {% /field %}
600
+ <!-- field kind="checkboxes" id="tasks_simple" role="user" checkboxMode="simple" label="Agreements (Simple Mode)" required=true -->
601
+ - [ ] I have read the guidelines <!-- #read_guidelines -->
602
+ - [ ] I agree to the terms <!-- #agree_terms -->
603
+ <!-- /field -->
595
604
 
596
- {% field kind="checkboxes" id="confirmations" role="user" checkboxMode="explicit" label="Confirmations (Explicit Mode)" required=true %}
597
- - [ ] Data has been backed up {% #backed_up %}
598
- - [ ] Stakeholders notified {% #notified %}
599
- {% /field %}
605
+ <!-- field kind="checkboxes" id="confirmations" role="user" checkboxMode="explicit" label="Confirmations (Explicit Mode)" required=true -->
606
+ - [ ] Data has been backed up <!-- #backed_up -->
607
+ - [ ] Stakeholders notified <!-- #notified -->
608
+ <!-- /field -->
600
609
 
601
- {% instructions ref="confirmations" %}
610
+ <!-- instructions ref="confirmations" -->
602
611
  Answer yes or no for each confirmation.
603
612
  All must be explicitly answered.
604
- {% /instructions %}
613
+ <!-- /instructions -->
605
614
 
606
- {% /group %}
615
+ <!-- /group -->
607
616
 
608
- {% group id="url_fields" title="URL Fields" %}
617
+ <!-- group id="url_fields" title="URL Fields" -->
609
618
 
610
- {% field kind="url" id="website" role="user" examples=["https://github.com/user/repo", "https://company.com"] label="Website" placeholder="https://example.com" required=true %}{% /field %}
619
+ <!-- field kind="url" id="website" role="user" examples=["https://github.com/user/repo", "https://company.com"] label="Website" placeholder="https://example.com" required=true --><!-- /field -->
611
620
 
612
- {% instructions ref="website" %}
621
+ <!-- instructions ref="website" -->
613
622
  Enter your website URL (must be http or https).
614
- {% /instructions %}
623
+ <!-- /instructions -->
615
624
 
616
- {% field kind="url_list" id="references" role="user" examples=["https://wikipedia.org/wiki/Example", "https://docs.github.com/en"] label="References" maxItems=5 minItems=1 placeholder="https://docs.example.com" uniqueItems=true %}{% /field %}
625
+ <!-- field kind="url_list" id="references" role="user" examples=["https://wikipedia.org/wiki/Example", "https://docs.github.com/en"] label="References" maxItems=5 minItems=1 placeholder="https://docs.example.com" uniqueItems=true --><!-- /field -->
617
626
 
618
- {% instructions ref="references" %}
627
+ <!-- instructions ref="references" -->
619
628
  Add 1-5 unique reference URLs for sources or documentation.
620
- {% /instructions %}
629
+ <!-- /instructions -->
621
630
 
622
- {% /group %}
631
+ <!-- /group -->
623
632
 
624
- {% group id="date_fields" title="Date and Year Fields" %}
633
+ <!-- group id="date_fields" title="Date and Year Fields" -->
625
634
 
626
- {% field kind="date" id="event_date" role="user" label="Event Date" max="2030-12-31" min="2020-01-01" required=true %}{% /field %}
635
+ <!-- field kind="date" id="event_date" role="user" label="Event Date" max="2030-12-31" min="2020-01-01" required=true --><!-- /field -->
627
636
 
628
- {% instructions ref="event_date" %}
637
+ <!-- instructions ref="event_date" -->
629
638
  Enter the event date (YYYY-MM-DD format, between 2020 and 2030).
630
- {% /instructions %}
639
+ <!-- /instructions -->
631
640
 
632
- {% field kind="year" id="founded_year" role="user" label="Founded Year" max=2030 min=1900 required=true %}{% /field %}
641
+ <!-- field kind="year" id="founded_year" role="user" label="Founded Year" max=2030 min=1900 required=true --><!-- /field -->
633
642
 
634
- {% instructions ref="founded_year" %}
643
+ <!-- instructions ref="founded_year" -->
635
644
  Enter the year the company was founded (1900-2030).
636
- {% /instructions %}
645
+ <!-- /instructions -->
637
646
 
638
- {% /group %}
647
+ <!-- /group -->
639
648
 
640
- {% group id="table_fields" title="Table Fields" %}
649
+ <!-- group id="table_fields" title="Table Fields" -->
641
650
 
642
- {% field kind="table" id="team_members" role="user" columnIds=["name", "role", "start_date"] columnLabels=["Name", "Role", "Start Date"] columnTypes=[{type: "string", required: true}, "string", "date"] label="Team Members" maxRows=5 minRows=0 %}{% /field %}
651
+ <!-- field kind="table" id="team_members" role="user" columnIds=["name", "role", "start_date"] columnLabels=["Name", "Role", "Start Date"] columnTypes=[{type: "string", required: true}, "string", "date"] label="Team Members" maxRows=5 minRows=0 --><!-- /field -->
643
652
 
644
- {% instructions ref="team_members" %}
653
+ <!-- instructions ref="team_members" -->
645
654
  Add team members with their name (required), role, and start date.
646
- {% /instructions %}
655
+ <!-- /instructions -->
647
656
 
648
- {% field kind="table" id="project_tasks" role="user" columnIds=["task", "estimate_hrs", "link"] columnLabels=["Task", "Estimate (hrs)", "Link"] columnTypes=[{type: "string", required: true}, "number", "url"] label="Project Tasks" maxRows=10 minRows=0 %}{% /field %}
657
+ <!-- field kind="table" id="project_tasks" role="user" columnIds=["task", "estimate_hrs", "link"] columnLabels=["Task", "Estimate (hrs)", "Link"] columnTypes=[{type: "string", required: true}, "number", "url"] label="Project Tasks" maxRows=10 minRows=0 --><!-- /field -->
649
658
 
650
- {% instructions ref="project_tasks" %}
659
+ <!-- instructions ref="project_tasks" -->
651
660
  Optionally add project tasks with estimated hours and reference links.
652
- {% /instructions %}
661
+ <!-- /instructions -->
653
662
 
654
- {% /group %}
663
+ <!-- /group -->
655
664
 
656
- {% group id="optional_fields" title="Optional Fields" %}
665
+ <!-- group id="optional_fields" title="Optional Fields" -->
657
666
 
658
- {% field kind="string" id="notes" role="user" label="Notes" %}{% /field %}
667
+ <!-- field kind="string" id="notes" role="user" label="Notes" --><!-- /field -->
659
668
 
660
- {% instructions ref="notes" %}
669
+ <!-- instructions ref="notes" -->
661
670
  Add any relevant notes or observations (optional).
662
- {% /instructions %}
671
+ <!-- /instructions -->
663
672
 
664
- {% field kind="number" id="optional_number" role="user" label="Optional Number" %}{% /field %}
673
+ <!-- field kind="number" id="optional_number" role="user" label="Optional Number" --><!-- /field -->
665
674
 
666
- {% field kind="url" id="related_url" role="user" label="Related URL" %}{% /field %}
675
+ <!-- field kind="url" id="related_url" role="user" label="Related URL" --><!-- /field -->
667
676
 
668
- {% instructions ref="related_url" %}
677
+ <!-- instructions ref="related_url" -->
669
678
  Optionally add a URL to related documentation or resources.
670
- {% /instructions %}
679
+ <!-- /instructions -->
671
680
 
672
- {% field kind="date" id="optional_date" role="user" label="Optional Date" %}{% /field %}
681
+ <!-- field kind="date" id="optional_date" role="user" label="Optional Date" --><!-- /field -->
673
682
 
674
- {% instructions ref="optional_date" %}
683
+ <!-- instructions ref="optional_date" -->
675
684
  Optionally add a date (YYYY-MM-DD format).
676
- {% /instructions %}
685
+ <!-- /instructions -->
677
686
 
678
- {% field kind="year" id="optional_year" role="user" label="Optional Year" %}{% /field %}
687
+ <!-- field kind="year" id="optional_year" role="user" label="Optional Year" --><!-- /field -->
679
688
 
680
- {% instructions ref="optional_year" %}
689
+ <!-- instructions ref="optional_year" -->
681
690
  Optionally add a year.
682
- {% /instructions %}
691
+ <!-- /instructions -->
692
+
693
+ <!-- /group -->
694
+
695
+ <!-- /form -->
696
+
683
697
 
684
- {% /group %}
685
698
 
686
- {% /form %}
687
699
 
688
700
  ```
689
701
 
@@ -935,7 +947,7 @@ turns:
935
947
  reason: No value in mock form
936
948
  after:
937
949
  required_issue_count: 0
938
- markdown_sha256: 21c8527d7c79ecc116a3c7513ce537bf1837428accd69525f199270bffb5b415
950
+ markdown_sha256: 977039176fe8f9cba5a40f8726db43653bf4bc101c2add9cfaee4d4f6ed5e164
939
951
  answered_field_count: 13
940
952
  skipped_field_count: 7
941
953
  context:
@@ -988,7 +1000,7 @@ turns:
988
1000
  `{ op: "skip_field", fieldId: "...", reason: "Could not find verified data" }`
989
1001
 
990
1002
 
991
- # Instructions for agent role
1003
+ # Role guidance
992
1004
  Complete the remaining fields based on the provided context.
993
1005
 
994
1006
  # Field-specific instructions
@@ -1009,202 +1021,208 @@ turns:
1009
1021
  ```markdown
1010
1022
  ---
1011
1023
  markform:
1012
- spec: "MF/0.1"
1013
- run_mode: "interactive"
1014
- role_instructions:
1015
- user: "Fill in the fields you have direct knowledge of."
1016
- agent: "Complete the remaining fields based on the provided context."
1024
+ spec: MF/0.1
1025
+ title: Simple Test Form
1026
+ description: Fully interactive demo - no LLM required. Demonstrates all Markform field types.
1027
+ run_mode: interactive
1028
+ roles:
1029
+ - user
1030
+ role_instructions:
1031
+ user: Fill in all fields in this form.
1017
1032
  ---
1018
1033
 
1019
- {% form id="simple_test" title="Simple Test Form" %}
1034
+ <!-- form id="simple_test" title="Simple Test Form" -->
1020
1035
 
1021
- {% description ref="simple_test" %}
1036
+ <!-- description ref="simple_test" -->
1022
1037
  A fully interactive form demonstrating all Markform v0.1 field types.
1023
1038
  Fill all fields using interactive prompts - no LLM API key needed.
1024
- {% /description %}
1039
+ <!-- /description -->
1025
1040
 
1026
- {% group id="basic_fields" title="Basic Fields" %}
1041
+ <!-- group id="basic_fields" title="Basic Fields" -->
1027
1042
 
1028
- {% field kind="string" id="name" role="user" examples=["John Smith", "Jane Doe"] label="Name" maxLength=50 minLength=2 placeholder="Enter your name" required=true %}
1043
+ <!-- field kind="string" id="name" role="user" examples=["John Smith", "Jane Doe"] label="Name" maxLength=50 minLength=2 placeholder="Enter your name" required=true -->
1029
1044
  ```value
1030
1045
  Test User
1031
1046
  ```
1032
- {% /field %}
1047
+ <!-- /field -->
1033
1048
 
1034
- {% instructions ref="name" %}
1049
+ <!-- instructions ref="name" -->
1035
1050
  Enter your full name (2-50 characters).
1036
- {% /instructions %}
1051
+ <!-- /instructions -->
1037
1052
 
1038
- {% field kind="string" id="email" role="user" examples=["alice@company.com", "bob@example.org"] label="Email" pattern="^[^@]+@[^@]+\\.[^@]+$" placeholder="email@example.com" required=true %}
1053
+ <!-- field kind="string" id="email" role="user" examples=["alice@company.com", "bob@example.org"] label="Email" pattern="^[^@]+@[^@]+\\.[^@]+$" placeholder="email@example.com" required=true -->
1039
1054
  ```value
1040
1055
  test@example.com
1041
1056
  ```
1042
- {% /field %}
1057
+ <!-- /field -->
1043
1058
 
1044
- {% field kind="number" id="age" role="user" examples=["18", "30", "45"] integer=true label="Age" max=150 min=0 placeholder="25" required=true %}
1059
+ <!-- field kind="number" id="age" role="user" examples=["18", "30", "45"] integer=true label="Age" max=150 min=0 placeholder="25" required=true -->
1045
1060
  ```value
1046
1061
  25
1047
1062
  ```
1048
- {% /field %}
1063
+ <!-- /field -->
1049
1064
 
1050
- {% field kind="number" id="score" role="user" examples=["75.0", "90.5", "100.0"] label="Score" max=100 min=0 placeholder="85.5" %}{% /field %}
1065
+ <!-- field kind="number" id="score" role="user" examples=["75.0", "90.5", "100.0"] label="Score" max=100 min=0 placeholder="85.5" --><!-- /field -->
1051
1066
 
1052
- {% instructions ref="score" %}
1067
+ <!-- instructions ref="score" -->
1053
1068
  Enter a score between 0 and 100 (optional).
1054
- {% /instructions %}
1069
+ <!-- /instructions -->
1055
1070
 
1056
- {% /group %}
1071
+ <!-- /group -->
1057
1072
 
1058
- {% group id="list_fields" title="List Fields" %}
1073
+ <!-- group id="list_fields" title="List Fields" -->
1059
1074
 
1060
- {% field kind="string_list" id="tags" role="user" itemMinLength=2 label="Tags" maxItems=5 minItems=1 required=true uniqueItems=true %}
1075
+ <!-- field kind="string_list" id="tags" role="user" itemMinLength=2 label="Tags" maxItems=5 minItems=1 required=true uniqueItems=true -->
1061
1076
  ```value
1062
1077
  typescript
1063
1078
  testing
1064
1079
  ```
1065
- {% /field %}
1080
+ <!-- /field -->
1066
1081
 
1067
- {% instructions ref="tags" %}
1082
+ <!-- instructions ref="tags" -->
1068
1083
  Add 1-5 unique tags (each at least 2 characters).
1069
- {% /instructions %}
1084
+ <!-- /instructions -->
1070
1085
 
1071
- {% /group %}
1086
+ <!-- /group -->
1072
1087
 
1073
- {% group id="selection_fields" title="Selection Fields" %}
1088
+ <!-- group id="selection_fields" title="Selection Fields" -->
1074
1089
 
1075
- {% field kind="single_select" id="priority" role="user" label="Priority" required=true %}
1076
- - [ ] Low {% #low %}
1077
- - [ ] Medium {% #medium %}
1078
- - [x] High {% #high %}
1079
- {% /field %}
1090
+ <!-- field kind="single_select" id="priority" role="user" label="Priority" required=true -->
1091
+ - [ ] Low <!-- #low -->
1092
+ - [ ] Medium <!-- #medium -->
1093
+ - [x] High <!-- #high -->
1094
+ <!-- /field -->
1080
1095
 
1081
- {% field kind="multi_select" id="categories" role="user" label="Categories" maxSelections=3 minSelections=1 required=true %}
1082
- - [x] Frontend {% #frontend %}
1083
- - [x] Backend {% #backend %}
1084
- - [ ] Database {% #database %}
1085
- - [ ] DevOps {% #devops %}
1086
- {% /field %}
1096
+ <!-- field kind="multi_select" id="categories" role="user" label="Categories" maxSelections=3 minSelections=1 required=true -->
1097
+ - [x] Frontend <!-- #frontend -->
1098
+ - [x] Backend <!-- #backend -->
1099
+ - [ ] Database <!-- #database -->
1100
+ - [ ] DevOps <!-- #devops -->
1101
+ <!-- /field -->
1087
1102
 
1088
- {% /group %}
1103
+ <!-- /group -->
1089
1104
 
1090
- {% group id="checkbox_fields" title="Checkbox Fields" %}
1105
+ <!-- group id="checkbox_fields" title="Checkbox Fields" -->
1091
1106
 
1092
- {% field kind="checkboxes" id="tasks_multi" role="user" label="Tasks (Multi Mode)" required=true %}
1093
- - [x] Research {% #research %}
1094
- - [x] Design {% #design %}
1095
- - [x] Implement {% #implement %}
1096
- - [-] Test {% #test %}
1097
- {% /field %}
1107
+ <!-- field kind="checkboxes" id="tasks_multi" role="user" label="Tasks (Multi Mode)" required=true -->
1108
+ - [x] Research <!-- #research -->
1109
+ - [x] Design <!-- #design -->
1110
+ - [x] Implement <!-- #implement -->
1111
+ - [-] Test <!-- #test -->
1112
+ <!-- /field -->
1098
1113
 
1099
- {% instructions ref="tasks_multi" %}
1114
+ <!-- instructions ref="tasks_multi" -->
1100
1115
  Track task progress.
1101
1116
  All must reach done or na state to complete.
1102
- {% /instructions %}
1117
+ <!-- /instructions -->
1103
1118
 
1104
- {% field kind="checkboxes" id="tasks_simple" role="user" checkboxMode="simple" label="Agreements (Simple Mode)" required=true %}
1105
- - [ ] I have read the guidelines {% #read_guidelines %}
1106
- - [ ] I agree to the terms {% #agree_terms %}
1107
- {% /field %}
1119
+ <!-- field kind="checkboxes" id="tasks_simple" role="user" checkboxMode="simple" label="Agreements (Simple Mode)" required=true -->
1120
+ - [ ] I have read the guidelines <!-- #read_guidelines -->
1121
+ - [ ] I agree to the terms <!-- #agree_terms -->
1122
+ <!-- /field -->
1108
1123
 
1109
- {% field kind="checkboxes" id="confirmations" role="user" checkboxMode="explicit" label="Confirmations (Explicit Mode)" required=true %}
1110
- - [y] Data has been backed up {% #backed_up %}
1111
- - [n] Stakeholders notified {% #notified %}
1112
- {% /field %}
1124
+ <!-- field kind="checkboxes" id="confirmations" role="user" checkboxMode="explicit" label="Confirmations (Explicit Mode)" required=true -->
1125
+ - [y] Data has been backed up <!-- #backed_up -->
1126
+ - [n] Stakeholders notified <!-- #notified -->
1127
+ <!-- /field -->
1113
1128
 
1114
- {% instructions ref="confirmations" %}
1129
+ <!-- instructions ref="confirmations" -->
1115
1130
  Answer yes or no for each confirmation.
1116
1131
  All must be explicitly answered.
1117
- {% /instructions %}
1132
+ <!-- /instructions -->
1118
1133
 
1119
- {% /group %}
1134
+ <!-- /group -->
1120
1135
 
1121
- {% group id="url_fields" title="URL Fields" %}
1136
+ <!-- group id="url_fields" title="URL Fields" -->
1122
1137
 
1123
- {% field kind="url" id="website" role="user" examples=["https://github.com/user/repo", "https://company.com"] label="Website" placeholder="https://example.com" required=true %}{% /field %}
1138
+ <!-- field kind="url" id="website" role="user" examples=["https://github.com/user/repo", "https://company.com"] label="Website" placeholder="https://example.com" required=true --><!-- /field -->
1124
1139
 
1125
- {% instructions ref="website" %}
1140
+ <!-- instructions ref="website" -->
1126
1141
  Enter your website URL (must be http or https).
1127
- {% /instructions %}
1142
+ <!-- /instructions -->
1128
1143
 
1129
- {% field kind="url_list" id="references" role="user" examples=["https://wikipedia.org/wiki/Example", "https://docs.github.com/en"] label="References" maxItems=5 minItems=1 placeholder="https://docs.example.com" uniqueItems=true %}{% /field %}
1144
+ <!-- field kind="url_list" id="references" role="user" examples=["https://wikipedia.org/wiki/Example", "https://docs.github.com/en"] label="References" maxItems=5 minItems=1 placeholder="https://docs.example.com" uniqueItems=true --><!-- /field -->
1130
1145
 
1131
- {% instructions ref="references" %}
1146
+ <!-- instructions ref="references" -->
1132
1147
  Add 1-5 unique reference URLs for sources or documentation.
1133
- {% /instructions %}
1148
+ <!-- /instructions -->
1134
1149
 
1135
- {% /group %}
1150
+ <!-- /group -->
1136
1151
 
1137
- {% group id="date_fields" title="Date and Year Fields" %}
1152
+ <!-- group id="date_fields" title="Date and Year Fields" -->
1138
1153
 
1139
- {% field kind="date" id="event_date" role="user" label="Event Date" max="2030-12-31" min="2020-01-01" required=true %}
1154
+ <!-- field kind="date" id="event_date" role="user" label="Event Date" max="2030-12-31" min="2020-01-01" required=true -->
1140
1155
  ```value
1141
1156
  2025-03-15
1142
1157
  ```
1143
- {% /field %}
1158
+ <!-- /field -->
1144
1159
 
1145
- {% instructions ref="event_date" %}
1160
+ <!-- instructions ref="event_date" -->
1146
1161
  Enter the event date (YYYY-MM-DD format, between 2020 and 2030).
1147
- {% /instructions %}
1162
+ <!-- /instructions -->
1148
1163
 
1149
- {% field kind="year" id="founded_year" role="user" label="Founded Year" max=2030 min=1900 required=true %}
1164
+ <!-- field kind="year" id="founded_year" role="user" label="Founded Year" max=2030 min=1900 required=true -->
1150
1165
  ```value
1151
1166
  2021
1152
1167
  ```
1153
- {% /field %}
1168
+ <!-- /field -->
1154
1169
 
1155
- {% instructions ref="founded_year" %}
1170
+ <!-- instructions ref="founded_year" -->
1156
1171
  Enter the year the company was founded (1900-2030).
1157
- {% /instructions %}
1172
+ <!-- /instructions -->
1158
1173
 
1159
- {% /group %}
1174
+ <!-- /group -->
1160
1175
 
1161
- {% group id="table_fields" title="Table Fields" %}
1176
+ <!-- group id="table_fields" title="Table Fields" -->
1162
1177
 
1163
- {% field kind="table" id="team_members" role="user" columnIds=["name", "role", "start_date"] columnLabels=["Name", "Role", "Start Date"] columnTypes=[{type: "string", required: true}, "string", "date"] label="Team Members" maxRows=5 minRows=0 %}{% /field %}
1178
+ <!-- field kind="table" id="team_members" role="user" columnIds=["name", "role", "start_date"] columnLabels=["Name", "Role", "Start Date"] columnTypes=[{type: "string", required: true}, "string", "date"] label="Team Members" maxRows=5 minRows=0 --><!-- /field -->
1164
1179
 
1165
- {% instructions ref="team_members" %}
1180
+ <!-- instructions ref="team_members" -->
1166
1181
  Add team members with their name (required), role, and start date.
1167
- {% /instructions %}
1182
+ <!-- /instructions -->
1168
1183
 
1169
- {% field kind="table" id="project_tasks" role="user" columnIds=["task", "estimate_hrs", "link"] columnLabels=["Task", "Estimate (hrs)", "Link"] columnTypes=[{type: "string", required: true}, "number", "url"] label="Project Tasks" maxRows=10 minRows=0 %}{% /field %}
1184
+ <!-- field kind="table" id="project_tasks" role="user" columnIds=["task", "estimate_hrs", "link"] columnLabels=["Task", "Estimate (hrs)", "Link"] columnTypes=[{type: "string", required: true}, "number", "url"] label="Project Tasks" maxRows=10 minRows=0 --><!-- /field -->
1170
1185
 
1171
- {% instructions ref="project_tasks" %}
1186
+ <!-- instructions ref="project_tasks" -->
1172
1187
  Optionally add project tasks with estimated hours and reference links.
1173
- {% /instructions %}
1188
+ <!-- /instructions -->
1174
1189
 
1175
- {% /group %}
1190
+ <!-- /group -->
1176
1191
 
1177
- {% group id="optional_fields" title="Optional Fields" %}
1192
+ <!-- group id="optional_fields" title="Optional Fields" -->
1178
1193
 
1179
- {% field kind="string" id="notes" role="user" label="Notes" %}{% /field %}
1194
+ <!-- field kind="string" id="notes" role="user" label="Notes" --><!-- /field -->
1180
1195
 
1181
- {% instructions ref="notes" %}
1196
+ <!-- instructions ref="notes" -->
1182
1197
  Add any relevant notes or observations (optional).
1183
- {% /instructions %}
1198
+ <!-- /instructions -->
1184
1199
 
1185
- {% field kind="number" id="optional_number" role="user" label="Optional Number" %}{% /field %}
1200
+ <!-- field kind="number" id="optional_number" role="user" label="Optional Number" --><!-- /field -->
1186
1201
 
1187
- {% field kind="url" id="related_url" role="user" label="Related URL" %}{% /field %}
1202
+ <!-- field kind="url" id="related_url" role="user" label="Related URL" --><!-- /field -->
1188
1203
 
1189
- {% instructions ref="related_url" %}
1204
+ <!-- instructions ref="related_url" -->
1190
1205
  Optionally add a URL to related documentation or resources.
1191
- {% /instructions %}
1206
+ <!-- /instructions -->
1192
1207
 
1193
- {% field kind="date" id="optional_date" role="user" label="Optional Date" %}{% /field %}
1208
+ <!-- field kind="date" id="optional_date" role="user" label="Optional Date" --><!-- /field -->
1194
1209
 
1195
- {% instructions ref="optional_date" %}
1210
+ <!-- instructions ref="optional_date" -->
1196
1211
  Optionally add a date (YYYY-MM-DD format).
1197
- {% /instructions %}
1212
+ <!-- /instructions -->
1198
1213
 
1199
- {% field kind="year" id="optional_year" role="user" label="Optional Year" %}{% /field %}
1214
+ <!-- field kind="year" id="optional_year" role="user" label="Optional Year" --><!-- /field -->
1200
1215
 
1201
- {% instructions ref="optional_year" %}
1216
+ <!-- instructions ref="optional_year" -->
1202
1217
  Optionally add a year.
1203
- {% /instructions %}
1218
+ <!-- /instructions -->
1219
+
1220
+ <!-- /group -->
1221
+
1222
+ <!-- /form -->
1223
+
1204
1224
 
1205
- {% /group %}
1206
1225
 
1207
- {% /form %}
1208
1226
 
1209
1227
  ```
1210
1228
 
@@ -1331,7 +1349,7 @@ turns:
1331
1349
  `{ op: "skip_field", fieldId: "...", reason: "Could not find verified data" }`
1332
1350
 
1333
1351
 
1334
- # Instructions for agent role
1352
+ # Role guidance
1335
1353
  Complete the remaining fields based on the provided context.
1336
1354
 
1337
1355
  # Field-specific instructions
@@ -1352,202 +1370,208 @@ turns:
1352
1370
  ```markdown
1353
1371
  ---
1354
1372
  markform:
1355
- spec: "MF/0.1"
1356
- run_mode: "interactive"
1357
- role_instructions:
1358
- user: "Fill in the fields you have direct knowledge of."
1359
- agent: "Complete the remaining fields based on the provided context."
1373
+ spec: MF/0.1
1374
+ title: Simple Test Form
1375
+ description: Fully interactive demo - no LLM required. Demonstrates all Markform field types.
1376
+ run_mode: interactive
1377
+ roles:
1378
+ - user
1379
+ role_instructions:
1380
+ user: Fill in all fields in this form.
1360
1381
  ---
1361
1382
 
1362
- {% form id="simple_test" title="Simple Test Form" %}
1383
+ <!-- form id="simple_test" title="Simple Test Form" -->
1363
1384
 
1364
- {% description ref="simple_test" %}
1385
+ <!-- description ref="simple_test" -->
1365
1386
  A fully interactive form demonstrating all Markform v0.1 field types.
1366
1387
  Fill all fields using interactive prompts - no LLM API key needed.
1367
- {% /description %}
1388
+ <!-- /description -->
1368
1389
 
1369
- {% group id="basic_fields" title="Basic Fields" %}
1390
+ <!-- group id="basic_fields" title="Basic Fields" -->
1370
1391
 
1371
- {% field kind="string" id="name" role="user" examples=["John Smith", "Jane Doe"] label="Name" maxLength=50 minLength=2 placeholder="Enter your name" required=true %}
1392
+ <!-- field kind="string" id="name" role="user" examples=["John Smith", "Jane Doe"] label="Name" maxLength=50 minLength=2 placeholder="Enter your name" required=true -->
1372
1393
  ```value
1373
1394
  Test User
1374
1395
  ```
1375
- {% /field %}
1396
+ <!-- /field -->
1376
1397
 
1377
- {% instructions ref="name" %}
1398
+ <!-- instructions ref="name" -->
1378
1399
  Enter your full name (2-50 characters).
1379
- {% /instructions %}
1400
+ <!-- /instructions -->
1380
1401
 
1381
- {% field kind="string" id="email" role="user" examples=["alice@company.com", "bob@example.org"] label="Email" pattern="^[^@]+@[^@]+\\.[^@]+$" placeholder="email@example.com" required=true %}
1402
+ <!-- field kind="string" id="email" role="user" examples=["alice@company.com", "bob@example.org"] label="Email" pattern="^[^@]+@[^@]+\\.[^@]+$" placeholder="email@example.com" required=true -->
1382
1403
  ```value
1383
1404
  test@example.com
1384
1405
  ```
1385
- {% /field %}
1406
+ <!-- /field -->
1386
1407
 
1387
- {% field kind="number" id="age" role="user" examples=["18", "30", "45"] integer=true label="Age" max=150 min=0 placeholder="25" required=true %}
1408
+ <!-- field kind="number" id="age" role="user" examples=["18", "30", "45"] integer=true label="Age" max=150 min=0 placeholder="25" required=true -->
1388
1409
  ```value
1389
1410
  25
1390
1411
  ```
1391
- {% /field %}
1412
+ <!-- /field -->
1392
1413
 
1393
- {% field kind="number" id="score" role="user" examples=["75.0", "90.5", "100.0"] label="Score" max=100 min=0 placeholder="85.5" %}{% /field %}
1414
+ <!-- field kind="number" id="score" role="user" examples=["75.0", "90.5", "100.0"] label="Score" max=100 min=0 placeholder="85.5" --><!-- /field -->
1394
1415
 
1395
- {% instructions ref="score" %}
1416
+ <!-- instructions ref="score" -->
1396
1417
  Enter a score between 0 and 100 (optional).
1397
- {% /instructions %}
1418
+ <!-- /instructions -->
1398
1419
 
1399
- {% /group %}
1420
+ <!-- /group -->
1400
1421
 
1401
- {% group id="list_fields" title="List Fields" %}
1422
+ <!-- group id="list_fields" title="List Fields" -->
1402
1423
 
1403
- {% field kind="string_list" id="tags" role="user" itemMinLength=2 label="Tags" maxItems=5 minItems=1 required=true uniqueItems=true %}
1424
+ <!-- field kind="string_list" id="tags" role="user" itemMinLength=2 label="Tags" maxItems=5 minItems=1 required=true uniqueItems=true -->
1404
1425
  ```value
1405
1426
  typescript
1406
1427
  testing
1407
1428
  ```
1408
- {% /field %}
1429
+ <!-- /field -->
1409
1430
 
1410
- {% instructions ref="tags" %}
1431
+ <!-- instructions ref="tags" -->
1411
1432
  Add 1-5 unique tags (each at least 2 characters).
1412
- {% /instructions %}
1433
+ <!-- /instructions -->
1413
1434
 
1414
- {% /group %}
1435
+ <!-- /group -->
1415
1436
 
1416
- {% group id="selection_fields" title="Selection Fields" %}
1437
+ <!-- group id="selection_fields" title="Selection Fields" -->
1417
1438
 
1418
- {% field kind="single_select" id="priority" role="user" label="Priority" required=true %}
1419
- - [ ] Low {% #low %}
1420
- - [ ] Medium {% #medium %}
1421
- - [x] High {% #high %}
1422
- {% /field %}
1439
+ <!-- field kind="single_select" id="priority" role="user" label="Priority" required=true -->
1440
+ - [ ] Low <!-- #low -->
1441
+ - [ ] Medium <!-- #medium -->
1442
+ - [x] High <!-- #high -->
1443
+ <!-- /field -->
1423
1444
 
1424
- {% field kind="multi_select" id="categories" role="user" label="Categories" maxSelections=3 minSelections=1 required=true %}
1425
- - [x] Frontend {% #frontend %}
1426
- - [x] Backend {% #backend %}
1427
- - [ ] Database {% #database %}
1428
- - [ ] DevOps {% #devops %}
1429
- {% /field %}
1445
+ <!-- field kind="multi_select" id="categories" role="user" label="Categories" maxSelections=3 minSelections=1 required=true -->
1446
+ - [x] Frontend <!-- #frontend -->
1447
+ - [x] Backend <!-- #backend -->
1448
+ - [ ] Database <!-- #database -->
1449
+ - [ ] DevOps <!-- #devops -->
1450
+ <!-- /field -->
1430
1451
 
1431
- {% /group %}
1452
+ <!-- /group -->
1432
1453
 
1433
- {% group id="checkbox_fields" title="Checkbox Fields" %}
1454
+ <!-- group id="checkbox_fields" title="Checkbox Fields" -->
1434
1455
 
1435
- {% field kind="checkboxes" id="tasks_multi" role="user" label="Tasks (Multi Mode)" required=true %}
1436
- - [x] Research {% #research %}
1437
- - [x] Design {% #design %}
1438
- - [x] Implement {% #implement %}
1439
- - [-] Test {% #test %}
1440
- {% /field %}
1456
+ <!-- field kind="checkboxes" id="tasks_multi" role="user" label="Tasks (Multi Mode)" required=true -->
1457
+ - [x] Research <!-- #research -->
1458
+ - [x] Design <!-- #design -->
1459
+ - [x] Implement <!-- #implement -->
1460
+ - [-] Test <!-- #test -->
1461
+ <!-- /field -->
1441
1462
 
1442
- {% instructions ref="tasks_multi" %}
1463
+ <!-- instructions ref="tasks_multi" -->
1443
1464
  Track task progress.
1444
1465
  All must reach done or na state to complete.
1445
- {% /instructions %}
1466
+ <!-- /instructions -->
1446
1467
 
1447
- {% field kind="checkboxes" id="tasks_simple" role="user" checkboxMode="simple" label="Agreements (Simple Mode)" required=true %}
1448
- - [ ] I have read the guidelines {% #read_guidelines %}
1449
- - [ ] I agree to the terms {% #agree_terms %}
1450
- {% /field %}
1468
+ <!-- field kind="checkboxes" id="tasks_simple" role="user" checkboxMode="simple" label="Agreements (Simple Mode)" required=true -->
1469
+ - [ ] I have read the guidelines <!-- #read_guidelines -->
1470
+ - [ ] I agree to the terms <!-- #agree_terms -->
1471
+ <!-- /field -->
1451
1472
 
1452
- {% field kind="checkboxes" id="confirmations" role="user" checkboxMode="explicit" label="Confirmations (Explicit Mode)" required=true %}
1453
- - [y] Data has been backed up {% #backed_up %}
1454
- - [n] Stakeholders notified {% #notified %}
1455
- {% /field %}
1473
+ <!-- field kind="checkboxes" id="confirmations" role="user" checkboxMode="explicit" label="Confirmations (Explicit Mode)" required=true -->
1474
+ - [y] Data has been backed up <!-- #backed_up -->
1475
+ - [n] Stakeholders notified <!-- #notified -->
1476
+ <!-- /field -->
1456
1477
 
1457
- {% instructions ref="confirmations" %}
1478
+ <!-- instructions ref="confirmations" -->
1458
1479
  Answer yes or no for each confirmation.
1459
1480
  All must be explicitly answered.
1460
- {% /instructions %}
1481
+ <!-- /instructions -->
1461
1482
 
1462
- {% /group %}
1483
+ <!-- /group -->
1463
1484
 
1464
- {% group id="url_fields" title="URL Fields" %}
1485
+ <!-- group id="url_fields" title="URL Fields" -->
1465
1486
 
1466
- {% field kind="url" id="website" role="user" examples=["https://github.com/user/repo", "https://company.com"] label="Website" placeholder="https://example.com" required=true %}{% /field %}
1487
+ <!-- field kind="url" id="website" role="user" examples=["https://github.com/user/repo", "https://company.com"] label="Website" placeholder="https://example.com" required=true --><!-- /field -->
1467
1488
 
1468
- {% instructions ref="website" %}
1489
+ <!-- instructions ref="website" -->
1469
1490
  Enter your website URL (must be http or https).
1470
- {% /instructions %}
1491
+ <!-- /instructions -->
1471
1492
 
1472
- {% field kind="url_list" id="references" role="user" examples=["https://wikipedia.org/wiki/Example", "https://docs.github.com/en"] label="References" maxItems=5 minItems=1 placeholder="https://docs.example.com" uniqueItems=true %}{% /field %}
1493
+ <!-- field kind="url_list" id="references" role="user" examples=["https://wikipedia.org/wiki/Example", "https://docs.github.com/en"] label="References" maxItems=5 minItems=1 placeholder="https://docs.example.com" uniqueItems=true --><!-- /field -->
1473
1494
 
1474
- {% instructions ref="references" %}
1495
+ <!-- instructions ref="references" -->
1475
1496
  Add 1-5 unique reference URLs for sources or documentation.
1476
- {% /instructions %}
1497
+ <!-- /instructions -->
1477
1498
 
1478
- {% /group %}
1499
+ <!-- /group -->
1479
1500
 
1480
- {% group id="date_fields" title="Date and Year Fields" %}
1501
+ <!-- group id="date_fields" title="Date and Year Fields" -->
1481
1502
 
1482
- {% field kind="date" id="event_date" role="user" label="Event Date" max="2030-12-31" min="2020-01-01" required=true %}
1503
+ <!-- field kind="date" id="event_date" role="user" label="Event Date" max="2030-12-31" min="2020-01-01" required=true -->
1483
1504
  ```value
1484
1505
  2025-03-15
1485
1506
  ```
1486
- {% /field %}
1507
+ <!-- /field -->
1487
1508
 
1488
- {% instructions ref="event_date" %}
1509
+ <!-- instructions ref="event_date" -->
1489
1510
  Enter the event date (YYYY-MM-DD format, between 2020 and 2030).
1490
- {% /instructions %}
1511
+ <!-- /instructions -->
1491
1512
 
1492
- {% field kind="year" id="founded_year" role="user" label="Founded Year" max=2030 min=1900 required=true %}
1513
+ <!-- field kind="year" id="founded_year" role="user" label="Founded Year" max=2030 min=1900 required=true -->
1493
1514
  ```value
1494
1515
  2021
1495
1516
  ```
1496
- {% /field %}
1517
+ <!-- /field -->
1497
1518
 
1498
- {% instructions ref="founded_year" %}
1519
+ <!-- instructions ref="founded_year" -->
1499
1520
  Enter the year the company was founded (1900-2030).
1500
- {% /instructions %}
1521
+ <!-- /instructions -->
1501
1522
 
1502
- {% /group %}
1523
+ <!-- /group -->
1503
1524
 
1504
- {% group id="table_fields" title="Table Fields" %}
1525
+ <!-- group id="table_fields" title="Table Fields" -->
1505
1526
 
1506
- {% field kind="table" id="team_members" role="user" columnIds=["name", "role", "start_date"] columnLabels=["Name", "Role", "Start Date"] columnTypes=[{type: "string", required: true}, "string", "date"] label="Team Members" maxRows=5 minRows=0 %}{% /field %}
1527
+ <!-- field kind="table" id="team_members" role="user" columnIds=["name", "role", "start_date"] columnLabels=["Name", "Role", "Start Date"] columnTypes=[{type: "string", required: true}, "string", "date"] label="Team Members" maxRows=5 minRows=0 --><!-- /field -->
1507
1528
 
1508
- {% instructions ref="team_members" %}
1529
+ <!-- instructions ref="team_members" -->
1509
1530
  Add team members with their name (required), role, and start date.
1510
- {% /instructions %}
1531
+ <!-- /instructions -->
1511
1532
 
1512
- {% field kind="table" id="project_tasks" role="user" columnIds=["task", "estimate_hrs", "link"] columnLabels=["Task", "Estimate (hrs)", "Link"] columnTypes=[{type: "string", required: true}, "number", "url"] label="Project Tasks" maxRows=10 minRows=0 %}{% /field %}
1533
+ <!-- field kind="table" id="project_tasks" role="user" columnIds=["task", "estimate_hrs", "link"] columnLabels=["Task", "Estimate (hrs)", "Link"] columnTypes=[{type: "string", required: true}, "number", "url"] label="Project Tasks" maxRows=10 minRows=0 --><!-- /field -->
1513
1534
 
1514
- {% instructions ref="project_tasks" %}
1535
+ <!-- instructions ref="project_tasks" -->
1515
1536
  Optionally add project tasks with estimated hours and reference links.
1516
- {% /instructions %}
1537
+ <!-- /instructions -->
1517
1538
 
1518
- {% /group %}
1539
+ <!-- /group -->
1519
1540
 
1520
- {% group id="optional_fields" title="Optional Fields" %}
1541
+ <!-- group id="optional_fields" title="Optional Fields" -->
1521
1542
 
1522
- {% field kind="string" id="notes" role="user" label="Notes" %}{% /field %}
1543
+ <!-- field kind="string" id="notes" role="user" label="Notes" --><!-- /field -->
1523
1544
 
1524
- {% instructions ref="notes" %}
1545
+ <!-- instructions ref="notes" -->
1525
1546
  Add any relevant notes or observations (optional).
1526
- {% /instructions %}
1547
+ <!-- /instructions -->
1527
1548
 
1528
- {% field kind="number" id="optional_number" role="user" label="Optional Number" %}{% /field %}
1549
+ <!-- field kind="number" id="optional_number" role="user" label="Optional Number" --><!-- /field -->
1529
1550
 
1530
- {% field kind="url" id="related_url" role="user" label="Related URL" %}{% /field %}
1551
+ <!-- field kind="url" id="related_url" role="user" label="Related URL" --><!-- /field -->
1531
1552
 
1532
- {% instructions ref="related_url" %}
1553
+ <!-- instructions ref="related_url" -->
1533
1554
  Optionally add a URL to related documentation or resources.
1534
- {% /instructions %}
1555
+ <!-- /instructions -->
1535
1556
 
1536
- {% field kind="date" id="optional_date" role="user" label="Optional Date" %}{% /field %}
1557
+ <!-- field kind="date" id="optional_date" role="user" label="Optional Date" --><!-- /field -->
1537
1558
 
1538
- {% instructions ref="optional_date" %}
1559
+ <!-- instructions ref="optional_date" -->
1539
1560
  Optionally add a date (YYYY-MM-DD format).
1540
- {% /instructions %}
1561
+ <!-- /instructions -->
1541
1562
 
1542
- {% field kind="year" id="optional_year" role="user" label="Optional Year" %}{% /field %}
1563
+ <!-- field kind="year" id="optional_year" role="user" label="Optional Year" --><!-- /field -->
1543
1564
 
1544
- {% instructions ref="optional_year" %}
1565
+ <!-- instructions ref="optional_year" -->
1545
1566
  Optionally add a year.
1546
- {% /instructions %}
1567
+ <!-- /instructions -->
1568
+
1569
+ <!-- /group -->
1570
+
1571
+ <!-- /form -->
1572
+
1547
1573
 
1548
- {% /group %}
1549
1574
 
1550
- {% /form %}
1551
1575
 
1552
1576
  ```
1553
1577
 
@@ -1707,7 +1731,7 @@ turns:
1707
1731
  reason: No value in mock form
1708
1732
  after:
1709
1733
  required_issue_count: 0
1710
- markdown_sha256: 04cdbfc3f7880ee03c965da6c0bb2e27ffe933f75b3469c632ac589fdf3a617d
1734
+ markdown_sha256: 6bff8d2d1e64c787c0a6e0661051b8ff6fd94bfc2cb3ed4054e74c93576a75d5
1711
1735
  answered_field_count: 13
1712
1736
  skipped_field_count: 8
1713
1737
  context:
@@ -1760,7 +1784,7 @@ turns:
1760
1784
  `{ op: "skip_field", fieldId: "...", reason: "Could not find verified data" }`
1761
1785
 
1762
1786
 
1763
- # Instructions for agent role
1787
+ # Role guidance
1764
1788
  Complete the remaining fields based on the provided context.
1765
1789
 
1766
1790
  # Field-specific instructions
@@ -1774,238 +1798,244 @@ turns:
1774
1798
  ```markdown
1775
1799
  ---
1776
1800
  markform:
1777
- spec: "MF/0.1"
1778
- run_mode: "interactive"
1779
- role_instructions:
1780
- user: "Fill in the fields you have direct knowledge of."
1781
- agent: "Complete the remaining fields based on the provided context."
1801
+ spec: MF/0.1
1802
+ title: Simple Test Form
1803
+ description: Fully interactive demo - no LLM required. Demonstrates all Markform field types.
1804
+ run_mode: interactive
1805
+ roles:
1806
+ - user
1807
+ role_instructions:
1808
+ user: Fill in all fields in this form.
1782
1809
  ---
1783
1810
 
1784
- {% form id="simple_test" title="Simple Test Form" %}
1811
+ <!-- form id="simple_test" title="Simple Test Form" -->
1785
1812
 
1786
- {% description ref="simple_test" %}
1813
+ <!-- description ref="simple_test" -->
1787
1814
  A fully interactive form demonstrating all Markform v0.1 field types.
1788
1815
  Fill all fields using interactive prompts - no LLM API key needed.
1789
- {% /description %}
1816
+ <!-- /description -->
1790
1817
 
1791
- {% group id="basic_fields" title="Basic Fields" %}
1818
+ <!-- group id="basic_fields" title="Basic Fields" -->
1792
1819
 
1793
- {% field kind="string" id="name" role="user" examples=["John Smith", "Jane Doe"] label="Name" maxLength=50 minLength=2 placeholder="Enter your name" required=true %}
1820
+ <!-- field kind="string" id="name" role="user" examples=["John Smith", "Jane Doe"] label="Name" maxLength=50 minLength=2 placeholder="Enter your name" required=true -->
1794
1821
  ```value
1795
1822
  Test User
1796
1823
  ```
1797
- {% /field %}
1824
+ <!-- /field -->
1798
1825
 
1799
- {% instructions ref="name" %}
1826
+ <!-- instructions ref="name" -->
1800
1827
  Enter your full name (2-50 characters).
1801
- {% /instructions %}
1828
+ <!-- /instructions -->
1802
1829
 
1803
- {% field kind="string" id="email" role="user" examples=["alice@company.com", "bob@example.org"] label="Email" pattern="^[^@]+@[^@]+\\.[^@]+$" placeholder="email@example.com" required=true %}
1830
+ <!-- field kind="string" id="email" role="user" examples=["alice@company.com", "bob@example.org"] label="Email" pattern="^[^@]+@[^@]+\\.[^@]+$" placeholder="email@example.com" required=true -->
1804
1831
  ```value
1805
1832
  test@example.com
1806
1833
  ```
1807
- {% /field %}
1834
+ <!-- /field -->
1808
1835
 
1809
- {% field kind="number" id="age" role="user" examples=["18", "30", "45"] integer=true label="Age" max=150 min=0 placeholder="25" required=true %}
1836
+ <!-- field kind="number" id="age" role="user" examples=["18", "30", "45"] integer=true label="Age" max=150 min=0 placeholder="25" required=true -->
1810
1837
  ```value
1811
1838
  25
1812
1839
  ```
1813
- {% /field %}
1840
+ <!-- /field -->
1814
1841
 
1815
- {% field kind="number" id="score" role="user" examples=["75.0", "90.5", "100.0"] label="Score" max=100 min=0 placeholder="85.5" state="skipped" %}
1842
+ <!-- field kind="number" id="score" role="user" examples=["75.0", "90.5", "100.0"] label="Score" max=100 min=0 placeholder="85.5" state="skipped" -->
1816
1843
  ```value
1817
1844
  %SKIP% (No value in mock form)
1818
1845
  ```
1819
- {% /field %}
1846
+ <!-- /field -->
1820
1847
 
1821
- {% instructions ref="score" %}
1848
+ <!-- instructions ref="score" -->
1822
1849
  Enter a score between 0 and 100 (optional).
1823
- {% /instructions %}
1850
+ <!-- /instructions -->
1824
1851
 
1825
- {% /group %}
1852
+ <!-- /group -->
1826
1853
 
1827
- {% group id="list_fields" title="List Fields" %}
1854
+ <!-- group id="list_fields" title="List Fields" -->
1828
1855
 
1829
- {% field kind="string_list" id="tags" role="user" itemMinLength=2 label="Tags" maxItems=5 minItems=1 required=true uniqueItems=true %}
1856
+ <!-- field kind="string_list" id="tags" role="user" itemMinLength=2 label="Tags" maxItems=5 minItems=1 required=true uniqueItems=true -->
1830
1857
  ```value
1831
1858
  typescript
1832
1859
  testing
1833
1860
  ```
1834
- {% /field %}
1861
+ <!-- /field -->
1835
1862
 
1836
- {% instructions ref="tags" %}
1863
+ <!-- instructions ref="tags" -->
1837
1864
  Add 1-5 unique tags (each at least 2 characters).
1838
- {% /instructions %}
1865
+ <!-- /instructions -->
1839
1866
 
1840
- {% /group %}
1867
+ <!-- /group -->
1841
1868
 
1842
- {% group id="selection_fields" title="Selection Fields" %}
1869
+ <!-- group id="selection_fields" title="Selection Fields" -->
1843
1870
 
1844
- {% field kind="single_select" id="priority" role="user" label="Priority" required=true %}
1845
- - [ ] Low {% #low %}
1846
- - [ ] Medium {% #medium %}
1847
- - [x] High {% #high %}
1848
- {% /field %}
1871
+ <!-- field kind="single_select" id="priority" role="user" label="Priority" required=true -->
1872
+ - [ ] Low <!-- #low -->
1873
+ - [ ] Medium <!-- #medium -->
1874
+ - [x] High <!-- #high -->
1875
+ <!-- /field -->
1849
1876
 
1850
- {% field kind="multi_select" id="categories" role="user" label="Categories" maxSelections=3 minSelections=1 required=true %}
1851
- - [x] Frontend {% #frontend %}
1852
- - [x] Backend {% #backend %}
1853
- - [ ] Database {% #database %}
1854
- - [ ] DevOps {% #devops %}
1855
- {% /field %}
1877
+ <!-- field kind="multi_select" id="categories" role="user" label="Categories" maxSelections=3 minSelections=1 required=true -->
1878
+ - [x] Frontend <!-- #frontend -->
1879
+ - [x] Backend <!-- #backend -->
1880
+ - [ ] Database <!-- #database -->
1881
+ - [ ] DevOps <!-- #devops -->
1882
+ <!-- /field -->
1856
1883
 
1857
- {% /group %}
1884
+ <!-- /group -->
1858
1885
 
1859
- {% group id="checkbox_fields" title="Checkbox Fields" %}
1886
+ <!-- group id="checkbox_fields" title="Checkbox Fields" -->
1860
1887
 
1861
- {% field kind="checkboxes" id="tasks_multi" role="user" label="Tasks (Multi Mode)" required=true %}
1862
- - [x] Research {% #research %}
1863
- - [x] Design {% #design %}
1864
- - [x] Implement {% #implement %}
1865
- - [-] Test {% #test %}
1866
- {% /field %}
1888
+ <!-- field kind="checkboxes" id="tasks_multi" role="user" label="Tasks (Multi Mode)" required=true -->
1889
+ - [x] Research <!-- #research -->
1890
+ - [x] Design <!-- #design -->
1891
+ - [x] Implement <!-- #implement -->
1892
+ - [-] Test <!-- #test -->
1893
+ <!-- /field -->
1867
1894
 
1868
- {% instructions ref="tasks_multi" %}
1895
+ <!-- instructions ref="tasks_multi" -->
1869
1896
  Track task progress.
1870
1897
  All must reach done or na state to complete.
1871
- {% /instructions %}
1898
+ <!-- /instructions -->
1872
1899
 
1873
- {% field kind="checkboxes" id="tasks_simple" role="user" checkboxMode="simple" label="Agreements (Simple Mode)" required=true %}
1874
- - [x] I have read the guidelines {% #read_guidelines %}
1875
- - [x] I agree to the terms {% #agree_terms %}
1876
- {% /field %}
1900
+ <!-- field kind="checkboxes" id="tasks_simple" role="user" checkboxMode="simple" label="Agreements (Simple Mode)" required=true -->
1901
+ - [x] I have read the guidelines <!-- #read_guidelines -->
1902
+ - [x] I agree to the terms <!-- #agree_terms -->
1903
+ <!-- /field -->
1877
1904
 
1878
- {% field kind="checkboxes" id="confirmations" role="user" checkboxMode="explicit" label="Confirmations (Explicit Mode)" required=true %}
1879
- - [y] Data has been backed up {% #backed_up %}
1880
- - [n] Stakeholders notified {% #notified %}
1881
- {% /field %}
1905
+ <!-- field kind="checkboxes" id="confirmations" role="user" checkboxMode="explicit" label="Confirmations (Explicit Mode)" required=true -->
1906
+ - [y] Data has been backed up <!-- #backed_up -->
1907
+ - [n] Stakeholders notified <!-- #notified -->
1908
+ <!-- /field -->
1882
1909
 
1883
- {% instructions ref="confirmations" %}
1910
+ <!-- instructions ref="confirmations" -->
1884
1911
  Answer yes or no for each confirmation.
1885
1912
  All must be explicitly answered.
1886
- {% /instructions %}
1913
+ <!-- /instructions -->
1887
1914
 
1888
- {% /group %}
1915
+ <!-- /group -->
1889
1916
 
1890
- {% group id="url_fields" title="URL Fields" %}
1917
+ <!-- group id="url_fields" title="URL Fields" -->
1891
1918
 
1892
- {% field kind="url" id="website" role="user" examples=["https://github.com/user/repo", "https://company.com"] label="Website" placeholder="https://example.com" required=true %}
1919
+ <!-- field kind="url" id="website" role="user" examples=["https://github.com/user/repo", "https://company.com"] label="Website" placeholder="https://example.com" required=true -->
1893
1920
  ```value
1894
1921
  https://test.example.com
1895
1922
  ```
1896
- {% /field %}
1923
+ <!-- /field -->
1897
1924
 
1898
- {% instructions ref="website" %}
1925
+ <!-- instructions ref="website" -->
1899
1926
  Enter your website URL (must be http or https).
1900
- {% /instructions %}
1927
+ <!-- /instructions -->
1901
1928
 
1902
- {% field kind="url_list" id="references" role="user" examples=["https://wikipedia.org/wiki/Example", "https://docs.github.com/en"] label="References" maxItems=5 minItems=1 placeholder="https://docs.example.com" uniqueItems=true %}
1929
+ <!-- field kind="url_list" id="references" role="user" examples=["https://wikipedia.org/wiki/Example", "https://docs.github.com/en"] label="References" maxItems=5 minItems=1 placeholder="https://docs.example.com" uniqueItems=true -->
1903
1930
  ```value
1904
1931
  https://docs.example.com
1905
1932
  ```
1906
- {% /field %}
1933
+ <!-- /field -->
1907
1934
 
1908
- {% instructions ref="references" %}
1935
+ <!-- instructions ref="references" -->
1909
1936
  Add 1-5 unique reference URLs for sources or documentation.
1910
- {% /instructions %}
1937
+ <!-- /instructions -->
1911
1938
 
1912
- {% /group %}
1939
+ <!-- /group -->
1913
1940
 
1914
- {% group id="date_fields" title="Date and Year Fields" %}
1941
+ <!-- group id="date_fields" title="Date and Year Fields" -->
1915
1942
 
1916
- {% field kind="date" id="event_date" role="user" label="Event Date" max="2030-12-31" min="2020-01-01" required=true %}
1943
+ <!-- field kind="date" id="event_date" role="user" label="Event Date" max="2030-12-31" min="2020-01-01" required=true -->
1917
1944
  ```value
1918
1945
  2025-03-15
1919
1946
  ```
1920
- {% /field %}
1947
+ <!-- /field -->
1921
1948
 
1922
- {% instructions ref="event_date" %}
1949
+ <!-- instructions ref="event_date" -->
1923
1950
  Enter the event date (YYYY-MM-DD format, between 2020 and 2030).
1924
- {% /instructions %}
1951
+ <!-- /instructions -->
1925
1952
 
1926
- {% field kind="year" id="founded_year" role="user" label="Founded Year" max=2030 min=1900 required=true %}
1953
+ <!-- field kind="year" id="founded_year" role="user" label="Founded Year" max=2030 min=1900 required=true -->
1927
1954
  ```value
1928
1955
  2021
1929
1956
  ```
1930
- {% /field %}
1957
+ <!-- /field -->
1931
1958
 
1932
- {% instructions ref="founded_year" %}
1959
+ <!-- instructions ref="founded_year" -->
1933
1960
  Enter the year the company was founded (1900-2030).
1934
- {% /instructions %}
1961
+ <!-- /instructions -->
1935
1962
 
1936
- {% /group %}
1963
+ <!-- /group -->
1937
1964
 
1938
- {% group id="table_fields" title="Table Fields" %}
1965
+ <!-- group id="table_fields" title="Table Fields" -->
1939
1966
 
1940
- {% field kind="table" id="team_members" role="user" columnIds=["name", "role", "start_date"] columnLabels=["Name", "Role", "Start Date"] columnTypes=[{type: "string", required: true}, "string", "date"] label="Team Members" maxRows=5 minRows=0 %}{% /field %}
1967
+ <!-- field kind="table" id="team_members" role="user" columnIds=["name", "role", "start_date"] columnLabels=["Name", "Role", "Start Date"] columnTypes=[{type: "string", required: true}, "string", "date"] label="Team Members" maxRows=5 minRows=0 --><!-- /field -->
1941
1968
 
1942
- {% instructions ref="team_members" %}
1969
+ <!-- instructions ref="team_members" -->
1943
1970
  Add team members with their name (required), role, and start date.
1944
- {% /instructions %}
1971
+ <!-- /instructions -->
1945
1972
 
1946
- {% field kind="table" id="project_tasks" role="user" columnIds=["task", "estimate_hrs", "link"] columnLabels=["Task", "Estimate (hrs)", "Link"] columnTypes=[{type: "string", required: true}, "number", "url"] label="Project Tasks" maxRows=10 minRows=0 state="skipped" %}
1973
+ <!-- field kind="table" id="project_tasks" role="user" columnIds=["task", "estimate_hrs", "link"] columnLabels=["Task", "Estimate (hrs)", "Link"] columnTypes=[{type: "string", required: true}, "number", "url"] label="Project Tasks" maxRows=10 minRows=0 state="skipped" -->
1947
1974
  ```value
1948
1975
  %SKIP% (No value in mock form)
1949
1976
  ```
1950
- {% /field %}
1977
+ <!-- /field -->
1951
1978
 
1952
- {% instructions ref="project_tasks" %}
1979
+ <!-- instructions ref="project_tasks" -->
1953
1980
  Optionally add project tasks with estimated hours and reference links.
1954
- {% /instructions %}
1981
+ <!-- /instructions -->
1955
1982
 
1956
- {% /group %}
1983
+ <!-- /group -->
1957
1984
 
1958
- {% group id="optional_fields" title="Optional Fields" %}
1985
+ <!-- group id="optional_fields" title="Optional Fields" -->
1959
1986
 
1960
- {% field kind="string" id="notes" role="user" label="Notes" state="skipped" %}
1987
+ <!-- field kind="string" id="notes" role="user" label="Notes" state="skipped" -->
1961
1988
  ```value
1962
1989
  %SKIP% (No value in mock form)
1963
1990
  ```
1964
- {% /field %}
1991
+ <!-- /field -->
1965
1992
 
1966
- {% instructions ref="notes" %}
1993
+ <!-- instructions ref="notes" -->
1967
1994
  Add any relevant notes or observations (optional).
1968
- {% /instructions %}
1995
+ <!-- /instructions -->
1969
1996
 
1970
- {% field kind="number" id="optional_number" role="user" label="Optional Number" state="skipped" %}
1997
+ <!-- field kind="number" id="optional_number" role="user" label="Optional Number" state="skipped" -->
1971
1998
  ```value
1972
1999
  %SKIP% (No value in mock form)
1973
2000
  ```
1974
- {% /field %}
2001
+ <!-- /field -->
1975
2002
 
1976
- {% field kind="url" id="related_url" role="user" label="Related URL" state="skipped" %}
2003
+ <!-- field kind="url" id="related_url" role="user" label="Related URL" state="skipped" -->
1977
2004
  ```value
1978
2005
  %SKIP% (No value in mock form)
1979
2006
  ```
1980
- {% /field %}
2007
+ <!-- /field -->
1981
2008
 
1982
- {% instructions ref="related_url" %}
2009
+ <!-- instructions ref="related_url" -->
1983
2010
  Optionally add a URL to related documentation or resources.
1984
- {% /instructions %}
2011
+ <!-- /instructions -->
1985
2012
 
1986
- {% field kind="date" id="optional_date" role="user" label="Optional Date" state="skipped" %}
2013
+ <!-- field kind="date" id="optional_date" role="user" label="Optional Date" state="skipped" -->
1987
2014
  ```value
1988
2015
  %SKIP% (No value in mock form)
1989
2016
  ```
1990
- {% /field %}
2017
+ <!-- /field -->
1991
2018
 
1992
- {% instructions ref="optional_date" %}
2019
+ <!-- instructions ref="optional_date" -->
1993
2020
  Optionally add a date (YYYY-MM-DD format).
1994
- {% /instructions %}
2021
+ <!-- /instructions -->
1995
2022
 
1996
- {% field kind="year" id="optional_year" role="user" label="Optional Year" state="skipped" %}
2023
+ <!-- field kind="year" id="optional_year" role="user" label="Optional Year" state="skipped" -->
1997
2024
  ```value
1998
2025
  %SKIP% (No value in mock form)
1999
2026
  ```
2000
- {% /field %}
2027
+ <!-- /field -->
2001
2028
 
2002
- {% instructions ref="optional_year" %}
2029
+ <!-- instructions ref="optional_year" -->
2003
2030
  Optionally add a year.
2004
- {% /instructions %}
2031
+ <!-- /instructions -->
2032
+
2033
+ <!-- /group -->
2034
+
2035
+ <!-- /form -->
2036
+
2005
2037
 
2006
- {% /group %}
2007
2038
 
2008
- {% /form %}
2009
2039
 
2010
2040
  ```
2011
2041
 
@@ -2076,7 +2106,7 @@ turns:
2076
2106
  `{ op: "skip_field", fieldId: "...", reason: "Could not find verified data" }`
2077
2107
 
2078
2108
 
2079
- # Instructions for agent role
2109
+ # Role guidance
2080
2110
  Complete the remaining fields based on the provided context.
2081
2111
 
2082
2112
  # Field-specific instructions
@@ -2090,238 +2120,244 @@ turns:
2090
2120
  ```markdown
2091
2121
  ---
2092
2122
  markform:
2093
- spec: "MF/0.1"
2094
- run_mode: "interactive"
2095
- role_instructions:
2096
- user: "Fill in the fields you have direct knowledge of."
2097
- agent: "Complete the remaining fields based on the provided context."
2123
+ spec: MF/0.1
2124
+ title: Simple Test Form
2125
+ description: Fully interactive demo - no LLM required. Demonstrates all Markform field types.
2126
+ run_mode: interactive
2127
+ roles:
2128
+ - user
2129
+ role_instructions:
2130
+ user: Fill in all fields in this form.
2098
2131
  ---
2099
2132
 
2100
- {% form id="simple_test" title="Simple Test Form" %}
2133
+ <!-- form id="simple_test" title="Simple Test Form" -->
2101
2134
 
2102
- {% description ref="simple_test" %}
2135
+ <!-- description ref="simple_test" -->
2103
2136
  A fully interactive form demonstrating all Markform v0.1 field types.
2104
2137
  Fill all fields using interactive prompts - no LLM API key needed.
2105
- {% /description %}
2138
+ <!-- /description -->
2106
2139
 
2107
- {% group id="basic_fields" title="Basic Fields" %}
2140
+ <!-- group id="basic_fields" title="Basic Fields" -->
2108
2141
 
2109
- {% field kind="string" id="name" role="user" examples=["John Smith", "Jane Doe"] label="Name" maxLength=50 minLength=2 placeholder="Enter your name" required=true %}
2142
+ <!-- field kind="string" id="name" role="user" examples=["John Smith", "Jane Doe"] label="Name" maxLength=50 minLength=2 placeholder="Enter your name" required=true -->
2110
2143
  ```value
2111
2144
  Test User
2112
2145
  ```
2113
- {% /field %}
2146
+ <!-- /field -->
2114
2147
 
2115
- {% instructions ref="name" %}
2148
+ <!-- instructions ref="name" -->
2116
2149
  Enter your full name (2-50 characters).
2117
- {% /instructions %}
2150
+ <!-- /instructions -->
2118
2151
 
2119
- {% field kind="string" id="email" role="user" examples=["alice@company.com", "bob@example.org"] label="Email" pattern="^[^@]+@[^@]+\\.[^@]+$" placeholder="email@example.com" required=true %}
2152
+ <!-- field kind="string" id="email" role="user" examples=["alice@company.com", "bob@example.org"] label="Email" pattern="^[^@]+@[^@]+\\.[^@]+$" placeholder="email@example.com" required=true -->
2120
2153
  ```value
2121
2154
  test@example.com
2122
2155
  ```
2123
- {% /field %}
2156
+ <!-- /field -->
2124
2157
 
2125
- {% field kind="number" id="age" role="user" examples=["18", "30", "45"] integer=true label="Age" max=150 min=0 placeholder="25" required=true %}
2158
+ <!-- field kind="number" id="age" role="user" examples=["18", "30", "45"] integer=true label="Age" max=150 min=0 placeholder="25" required=true -->
2126
2159
  ```value
2127
2160
  25
2128
2161
  ```
2129
- {% /field %}
2162
+ <!-- /field -->
2130
2163
 
2131
- {% field kind="number" id="score" role="user" examples=["75.0", "90.5", "100.0"] label="Score" max=100 min=0 placeholder="85.5" state="skipped" %}
2164
+ <!-- field kind="number" id="score" role="user" examples=["75.0", "90.5", "100.0"] label="Score" max=100 min=0 placeholder="85.5" state="skipped" -->
2132
2165
  ```value
2133
2166
  %SKIP% (No value in mock form)
2134
2167
  ```
2135
- {% /field %}
2168
+ <!-- /field -->
2136
2169
 
2137
- {% instructions ref="score" %}
2170
+ <!-- instructions ref="score" -->
2138
2171
  Enter a score between 0 and 100 (optional).
2139
- {% /instructions %}
2172
+ <!-- /instructions -->
2140
2173
 
2141
- {% /group %}
2174
+ <!-- /group -->
2142
2175
 
2143
- {% group id="list_fields" title="List Fields" %}
2176
+ <!-- group id="list_fields" title="List Fields" -->
2144
2177
 
2145
- {% field kind="string_list" id="tags" role="user" itemMinLength=2 label="Tags" maxItems=5 minItems=1 required=true uniqueItems=true %}
2178
+ <!-- field kind="string_list" id="tags" role="user" itemMinLength=2 label="Tags" maxItems=5 minItems=1 required=true uniqueItems=true -->
2146
2179
  ```value
2147
2180
  typescript
2148
2181
  testing
2149
2182
  ```
2150
- {% /field %}
2183
+ <!-- /field -->
2151
2184
 
2152
- {% instructions ref="tags" %}
2185
+ <!-- instructions ref="tags" -->
2153
2186
  Add 1-5 unique tags (each at least 2 characters).
2154
- {% /instructions %}
2187
+ <!-- /instructions -->
2155
2188
 
2156
- {% /group %}
2189
+ <!-- /group -->
2157
2190
 
2158
- {% group id="selection_fields" title="Selection Fields" %}
2191
+ <!-- group id="selection_fields" title="Selection Fields" -->
2159
2192
 
2160
- {% field kind="single_select" id="priority" role="user" label="Priority" required=true %}
2161
- - [ ] Low {% #low %}
2162
- - [ ] Medium {% #medium %}
2163
- - [x] High {% #high %}
2164
- {% /field %}
2193
+ <!-- field kind="single_select" id="priority" role="user" label="Priority" required=true -->
2194
+ - [ ] Low <!-- #low -->
2195
+ - [ ] Medium <!-- #medium -->
2196
+ - [x] High <!-- #high -->
2197
+ <!-- /field -->
2165
2198
 
2166
- {% field kind="multi_select" id="categories" role="user" label="Categories" maxSelections=3 minSelections=1 required=true %}
2167
- - [x] Frontend {% #frontend %}
2168
- - [x] Backend {% #backend %}
2169
- - [ ] Database {% #database %}
2170
- - [ ] DevOps {% #devops %}
2171
- {% /field %}
2199
+ <!-- field kind="multi_select" id="categories" role="user" label="Categories" maxSelections=3 minSelections=1 required=true -->
2200
+ - [x] Frontend <!-- #frontend -->
2201
+ - [x] Backend <!-- #backend -->
2202
+ - [ ] Database <!-- #database -->
2203
+ - [ ] DevOps <!-- #devops -->
2204
+ <!-- /field -->
2172
2205
 
2173
- {% /group %}
2206
+ <!-- /group -->
2174
2207
 
2175
- {% group id="checkbox_fields" title="Checkbox Fields" %}
2208
+ <!-- group id="checkbox_fields" title="Checkbox Fields" -->
2176
2209
 
2177
- {% field kind="checkboxes" id="tasks_multi" role="user" label="Tasks (Multi Mode)" required=true %}
2178
- - [x] Research {% #research %}
2179
- - [x] Design {% #design %}
2180
- - [x] Implement {% #implement %}
2181
- - [-] Test {% #test %}
2182
- {% /field %}
2210
+ <!-- field kind="checkboxes" id="tasks_multi" role="user" label="Tasks (Multi Mode)" required=true -->
2211
+ - [x] Research <!-- #research -->
2212
+ - [x] Design <!-- #design -->
2213
+ - [x] Implement <!-- #implement -->
2214
+ - [-] Test <!-- #test -->
2215
+ <!-- /field -->
2183
2216
 
2184
- {% instructions ref="tasks_multi" %}
2217
+ <!-- instructions ref="tasks_multi" -->
2185
2218
  Track task progress.
2186
2219
  All must reach done or na state to complete.
2187
- {% /instructions %}
2220
+ <!-- /instructions -->
2188
2221
 
2189
- {% field kind="checkboxes" id="tasks_simple" role="user" checkboxMode="simple" label="Agreements (Simple Mode)" required=true %}
2190
- - [x] I have read the guidelines {% #read_guidelines %}
2191
- - [x] I agree to the terms {% #agree_terms %}
2192
- {% /field %}
2222
+ <!-- field kind="checkboxes" id="tasks_simple" role="user" checkboxMode="simple" label="Agreements (Simple Mode)" required=true -->
2223
+ - [x] I have read the guidelines <!-- #read_guidelines -->
2224
+ - [x] I agree to the terms <!-- #agree_terms -->
2225
+ <!-- /field -->
2193
2226
 
2194
- {% field kind="checkboxes" id="confirmations" role="user" checkboxMode="explicit" label="Confirmations (Explicit Mode)" required=true %}
2195
- - [y] Data has been backed up {% #backed_up %}
2196
- - [n] Stakeholders notified {% #notified %}
2197
- {% /field %}
2227
+ <!-- field kind="checkboxes" id="confirmations" role="user" checkboxMode="explicit" label="Confirmations (Explicit Mode)" required=true -->
2228
+ - [y] Data has been backed up <!-- #backed_up -->
2229
+ - [n] Stakeholders notified <!-- #notified -->
2230
+ <!-- /field -->
2198
2231
 
2199
- {% instructions ref="confirmations" %}
2232
+ <!-- instructions ref="confirmations" -->
2200
2233
  Answer yes or no for each confirmation.
2201
2234
  All must be explicitly answered.
2202
- {% /instructions %}
2235
+ <!-- /instructions -->
2203
2236
 
2204
- {% /group %}
2237
+ <!-- /group -->
2205
2238
 
2206
- {% group id="url_fields" title="URL Fields" %}
2239
+ <!-- group id="url_fields" title="URL Fields" -->
2207
2240
 
2208
- {% field kind="url" id="website" role="user" examples=["https://github.com/user/repo", "https://company.com"] label="Website" placeholder="https://example.com" required=true %}
2241
+ <!-- field kind="url" id="website" role="user" examples=["https://github.com/user/repo", "https://company.com"] label="Website" placeholder="https://example.com" required=true -->
2209
2242
  ```value
2210
2243
  https://test.example.com
2211
2244
  ```
2212
- {% /field %}
2245
+ <!-- /field -->
2213
2246
 
2214
- {% instructions ref="website" %}
2247
+ <!-- instructions ref="website" -->
2215
2248
  Enter your website URL (must be http or https).
2216
- {% /instructions %}
2249
+ <!-- /instructions -->
2217
2250
 
2218
- {% field kind="url_list" id="references" role="user" examples=["https://wikipedia.org/wiki/Example", "https://docs.github.com/en"] label="References" maxItems=5 minItems=1 placeholder="https://docs.example.com" uniqueItems=true %}
2251
+ <!-- field kind="url_list" id="references" role="user" examples=["https://wikipedia.org/wiki/Example", "https://docs.github.com/en"] label="References" maxItems=5 minItems=1 placeholder="https://docs.example.com" uniqueItems=true -->
2219
2252
  ```value
2220
2253
  https://docs.example.com
2221
2254
  ```
2222
- {% /field %}
2255
+ <!-- /field -->
2223
2256
 
2224
- {% instructions ref="references" %}
2257
+ <!-- instructions ref="references" -->
2225
2258
  Add 1-5 unique reference URLs for sources or documentation.
2226
- {% /instructions %}
2259
+ <!-- /instructions -->
2227
2260
 
2228
- {% /group %}
2261
+ <!-- /group -->
2229
2262
 
2230
- {% group id="date_fields" title="Date and Year Fields" %}
2263
+ <!-- group id="date_fields" title="Date and Year Fields" -->
2231
2264
 
2232
- {% field kind="date" id="event_date" role="user" label="Event Date" max="2030-12-31" min="2020-01-01" required=true %}
2265
+ <!-- field kind="date" id="event_date" role="user" label="Event Date" max="2030-12-31" min="2020-01-01" required=true -->
2233
2266
  ```value
2234
2267
  2025-03-15
2235
2268
  ```
2236
- {% /field %}
2269
+ <!-- /field -->
2237
2270
 
2238
- {% instructions ref="event_date" %}
2271
+ <!-- instructions ref="event_date" -->
2239
2272
  Enter the event date (YYYY-MM-DD format, between 2020 and 2030).
2240
- {% /instructions %}
2273
+ <!-- /instructions -->
2241
2274
 
2242
- {% field kind="year" id="founded_year" role="user" label="Founded Year" max=2030 min=1900 required=true %}
2275
+ <!-- field kind="year" id="founded_year" role="user" label="Founded Year" max=2030 min=1900 required=true -->
2243
2276
  ```value
2244
2277
  2021
2245
2278
  ```
2246
- {% /field %}
2279
+ <!-- /field -->
2247
2280
 
2248
- {% instructions ref="founded_year" %}
2281
+ <!-- instructions ref="founded_year" -->
2249
2282
  Enter the year the company was founded (1900-2030).
2250
- {% /instructions %}
2283
+ <!-- /instructions -->
2251
2284
 
2252
- {% /group %}
2285
+ <!-- /group -->
2253
2286
 
2254
- {% group id="table_fields" title="Table Fields" %}
2287
+ <!-- group id="table_fields" title="Table Fields" -->
2255
2288
 
2256
- {% field kind="table" id="team_members" role="user" columnIds=["name", "role", "start_date"] columnLabels=["Name", "Role", "Start Date"] columnTypes=[{type: "string", required: true}, "string", "date"] label="Team Members" maxRows=5 minRows=0 %}{% /field %}
2289
+ <!-- field kind="table" id="team_members" role="user" columnIds=["name", "role", "start_date"] columnLabels=["Name", "Role", "Start Date"] columnTypes=[{type: "string", required: true}, "string", "date"] label="Team Members" maxRows=5 minRows=0 --><!-- /field -->
2257
2290
 
2258
- {% instructions ref="team_members" %}
2291
+ <!-- instructions ref="team_members" -->
2259
2292
  Add team members with their name (required), role, and start date.
2260
- {% /instructions %}
2293
+ <!-- /instructions -->
2261
2294
 
2262
- {% field kind="table" id="project_tasks" role="user" columnIds=["task", "estimate_hrs", "link"] columnLabels=["Task", "Estimate (hrs)", "Link"] columnTypes=[{type: "string", required: true}, "number", "url"] label="Project Tasks" maxRows=10 minRows=0 state="skipped" %}
2295
+ <!-- field kind="table" id="project_tasks" role="user" columnIds=["task", "estimate_hrs", "link"] columnLabels=["Task", "Estimate (hrs)", "Link"] columnTypes=[{type: "string", required: true}, "number", "url"] label="Project Tasks" maxRows=10 minRows=0 state="skipped" -->
2263
2296
  ```value
2264
2297
  %SKIP% (No value in mock form)
2265
2298
  ```
2266
- {% /field %}
2299
+ <!-- /field -->
2267
2300
 
2268
- {% instructions ref="project_tasks" %}
2301
+ <!-- instructions ref="project_tasks" -->
2269
2302
  Optionally add project tasks with estimated hours and reference links.
2270
- {% /instructions %}
2303
+ <!-- /instructions -->
2271
2304
 
2272
- {% /group %}
2305
+ <!-- /group -->
2273
2306
 
2274
- {% group id="optional_fields" title="Optional Fields" %}
2307
+ <!-- group id="optional_fields" title="Optional Fields" -->
2275
2308
 
2276
- {% field kind="string" id="notes" role="user" label="Notes" state="skipped" %}
2309
+ <!-- field kind="string" id="notes" role="user" label="Notes" state="skipped" -->
2277
2310
  ```value
2278
2311
  %SKIP% (No value in mock form)
2279
2312
  ```
2280
- {% /field %}
2313
+ <!-- /field -->
2281
2314
 
2282
- {% instructions ref="notes" %}
2315
+ <!-- instructions ref="notes" -->
2283
2316
  Add any relevant notes or observations (optional).
2284
- {% /instructions %}
2317
+ <!-- /instructions -->
2285
2318
 
2286
- {% field kind="number" id="optional_number" role="user" label="Optional Number" state="skipped" %}
2319
+ <!-- field kind="number" id="optional_number" role="user" label="Optional Number" state="skipped" -->
2287
2320
  ```value
2288
2321
  %SKIP% (No value in mock form)
2289
2322
  ```
2290
- {% /field %}
2323
+ <!-- /field -->
2291
2324
 
2292
- {% field kind="url" id="related_url" role="user" label="Related URL" state="skipped" %}
2325
+ <!-- field kind="url" id="related_url" role="user" label="Related URL" state="skipped" -->
2293
2326
  ```value
2294
2327
  %SKIP% (No value in mock form)
2295
2328
  ```
2296
- {% /field %}
2329
+ <!-- /field -->
2297
2330
 
2298
- {% instructions ref="related_url" %}
2331
+ <!-- instructions ref="related_url" -->
2299
2332
  Optionally add a URL to related documentation or resources.
2300
- {% /instructions %}
2333
+ <!-- /instructions -->
2301
2334
 
2302
- {% field kind="date" id="optional_date" role="user" label="Optional Date" state="skipped" %}
2335
+ <!-- field kind="date" id="optional_date" role="user" label="Optional Date" state="skipped" -->
2303
2336
  ```value
2304
2337
  %SKIP% (No value in mock form)
2305
2338
  ```
2306
- {% /field %}
2339
+ <!-- /field -->
2307
2340
 
2308
- {% instructions ref="optional_date" %}
2341
+ <!-- instructions ref="optional_date" -->
2309
2342
  Optionally add a date (YYYY-MM-DD format).
2310
- {% /instructions %}
2343
+ <!-- /instructions -->
2311
2344
 
2312
- {% field kind="year" id="optional_year" role="user" label="Optional Year" state="skipped" %}
2345
+ <!-- field kind="year" id="optional_year" role="user" label="Optional Year" state="skipped" -->
2313
2346
  ```value
2314
2347
  %SKIP% (No value in mock form)
2315
2348
  ```
2316
- {% /field %}
2349
+ <!-- /field -->
2317
2350
 
2318
- {% instructions ref="optional_year" %}
2351
+ <!-- instructions ref="optional_year" -->
2319
2352
  Optionally add a year.
2320
- {% /instructions %}
2353
+ <!-- /instructions -->
2354
+
2355
+ <!-- /group -->
2356
+
2357
+ <!-- /form -->
2358
+
2321
2359
 
2322
- {% /group %}
2323
2360
 
2324
- {% /form %}
2325
2361
 
2326
2362
  ```
2327
2363