Write each effect body-only against a preamble the host supplies, and let the build systems generate what each renderer needs -- a Swift catalog for OpenGL, a Metal fragment function through glslang and spirv-cross. Effects react to arriving events.