Let's say I have a Github repository 'bioinformatics_template' where I put extremely commonly used software, data and scripts. Some of the software is commonly used stuff like BWA and samtools. The scripts will mainly be my own stuff.
When I start a new analysis, I want to make a clone/fork/whatever of my repository. I then would like this repository to be a new repository (sometimes on Github, sometimes just stored locally). I may from time to time add new scripts or software that I would like to make it back to the original bioinformatics_template repository. Ideally I would also like the other projects to be easily update their basic template.
What is the correct workflow using Git? I am specifically confused as to the best way to employ Git features such as branches, tags, fork/pull models or a shared repository model. It feels a bit odd to be sending myself 'pull requests', but I also do not want a single shared repository.
A secondary question, I'd quite like to be able to specify that the repository sources things like BWA from their canonical repositories, ideally specifying the version used to help with reproducibility. What is the best way to achieve this?