We should use Parsoid's native implementation of several extensions (Cite, Pre, Nowiki, Gallery, Poem) to identify a narrow but coherent and consistent extension API that is sufficient for the extensions to do their job painlessly. This will require thinking about which of Parsoid's internal concepts are first-class language / MediaWiki concepts and which are Parsoid's implementation-specific concepts and use that to design the appropriate interface that can be published a first draft extension API.
But, perhaps the first step is to audit what of Parsoid's implementation details are currently exposed to the natively implemented extensions.