Authoring Guide

This guide focuses on writing maintainable ProtoML documents, not on listing every syntax rule.

Start with a consistent skeleton

  1. document metadata
  2. participants
  3. subjects
  4. tags or tag imports
  5. tasks
  6. meeting content
  7. optional governance blocks such as signatures, approvals, references, or attachments

This order keeps the structural source of truth near the top and the human-readable narrative near the bottom, which makes large files easier to review and diff.

Name things for reuse

Prefer stable, meaningful IDs such as lead, pm, security, release, or review.

A good rule is that an ID should still make sense three months later without reading the whole file again.

Keep structured data in blocks

If a value should be reused later, define it once in a block instead of duplicating it in prose.

Use shared tags for teams and projects

Move stable task vocabularies into shared _tags.pml files when multiple documents share the same workflow or cross-file analysis matters.

Keep local tags only when a label is temporary, one-off, or too project-specific to be worth sharing.

Split large documents deliberately

Use @import for appendices, reusable legal or policy text, standard meeting sections, or shared snippets.

The main document should still read like the table of contents and orchestration layer of the whole document, not like a random pile of imports.

Use macros sparingly but intentionally

Macros are best for repeated presentation patterns such as alerts, badges, summaries, timelines, and finance cards.

If the repeated thing is really content, choose imports. If you need a reusable rendered component with its own structure and presentation, choose macros. If you only want to change the overall document look, choose a renderer theme instead.

Governance documents need extra discipline

Establish conventions for @record_id, @status, @author, @version, @effective_date, @valid_until, and @review_date, then use protoparser register "<dir>" statistics.

Worked example

@tags_import "_workflow_tags.pml"
@protocol "Platform Weekly Sync - {{date}}"
@date:17.04.2026
@author:Jane Doe
@status:review
@record_id:PLATFORM-WEEKLY-2026-04-17

@participants
=lead:Jane Doe,jdoe,jdoe@example.com
=ops:Max Mustermann,mmustermann,max@example.com
=sec:Alex Roe,aroe,alex@example.com

@subjects
=release:Release status
=security:Security review
=followup:Next actions

@tasks
-[ ] Finalize release notes @ptp=lead =release @tag=important
-[ ] Recheck deployment window @ptp=ops =release @tag=review
-[ ] Confirm exception handling for audit finding @ptp=sec =security @tag=blocked

@meeting "Weekly Minutes"
# Platform Weekly Sync
## Summary
Current focus: @@e=release
## Participants
@@e=lead, @@e=ops, @@e=sec
## Open points
Audit topic: @@e=security
Next section: @@e=followup

Why this example is maintainable

Common authoring mistakes

Related guides