I understand more about your point now. Let's say if the general syntax to "hijack" the code block is: 1. an attribute `filter="..."` 2. a code block with an optional yaml block 3. the yaml block contains options for different filters 4. different filters can interact with the same code block (filter can have other filter as pre-processor) now since all filters aware that there can be an optional yaml filter, any filters following the same standard can strip away the yaml if they don't need it. So there seems no fundamental flaw in having a yaml block in the codeblock to store data, rather than using attributes. So I think the more important thing is to have a standard, general syntax that everyone agrees (like the above), then we can minimize compatibility issue between filters.