Guide for syntax extensions

I’d like to suggest that the directive syntax from reStructuredText be considered as a generic block-level extension syntax. It’s straightforward, if a little verbose, and is unlikely to conflict with anything. It looks like this:

.. directive-name::  [ positional arguments ]
   [ :key1: value1 
     :key2: value2
     ... ]

   [ text content, one or more paragraphs ]

All arguments are optional; if there is “text content”, it must be set off by a blank line; everything after the .. directive-name:: line that’s supposed to count as part of the directive must be indented at least three spaces. (For Markdown purposes, I would suggest that laziness is allowed to apply to text content as for paragraphs within list items, but not key-value arguments.)

reST also has an inline-extension syntax, :role:`text` but I’m less fond of it.