Hey eschwartz!
Great question. From your examples, it seems like the best would be to create a wire plugin that defines one or more wire facets. A facet is basically a way to do some work on a component (or multiple components) during a particular part of that component's lifecycle. That's an important distinction: facets represent behavior, and they execute during a particular lifecycle step.
For example, the `properties` facet runs during a component's `configure` lifecycle step.
So, one approach you might look into is to create a `render` facet and a `listenTo` facet that execute during appropriate lifecycles steps. It might make sense for `render` to execute during an early lifecycle step, such as `create:after` (there are two pseudo stages, :before and :after for each lifecycle step, except create ... there is no create:before), and for `listenTo` to run during `connect`--most things that make connections, like the `connect` facet from wire/connect execute during `connect`.
In fact, you might take a look at wire/connect for ideas of how to implement `listenTo`. Keep in mind that a single wire plugin can define many facets, so if it makes sense for your use case, you could define both `render` and `listenTo` in the same wire plugin ... or in separate ones. Again, it just depends on what makes sense for your particular situation.
Here are some links that might be helpful:
Hope that helps!