There are several routes you can take ...
You can write your own list definition in which you define a workflow relationship. This way, all lists created based on your list definition will contain your default workflow.
Or ... depending on your workflow ... write an EventReceiver that will be attached to all lists of the type to which you want to attach your workflow (some function can be easily reached) and your event receiver will bind the workflow when the first item is added.
or you can associate a workflow with the type of content used in the list (your own type of content that you attach to your own list definition or default for SharePoint content)
I do not know the rest is your decision, so I can offer you the best solution.
What I (almost) always do is write my own list definition. Thus, I can avoid such problems, both now and in the future.
source share