As far as I can see the only way to really get the information in a repository is manually, unless you want to look through the commits and all, figuring out what goes where. Though either way it would be best to have a copy of the repo somewhere (auto pull updates and all that, so it would have local files in raw format).
So the best way is to have a cronjob that attempts to pull updates every so often to a specified directory, and use the directory structure for your menu and displaying the files. To parse them the best way is to use your own library but with Joomla you have the JGithub class that can be used like so.
$github = new JGithub;
$result = $github->markdown->render('text here most likely the contents of a file');
echo $result; //will be html
A little warning though that uses the API to render it, so you could run into problems of running into the API limits. You can also use oauth to help bypass it but for such a simple need its best to use a library.
Having the files local in raw format makes it far less of a performance issue to just parse them on the fly as well, so less need for caching as all that is really happening is that you are reading a file anyway, if there is a need to cache it still then, because at this point it would be a customized extension for joomla anyway you could tie into Joomla's caching.
$cache = JCache::getInstance();
//data = rendered output, file is the path (dot separated is best) and extensionName is the custom extension
$cache->store($data,$file,$extensionName);
//then it can be called/checked like this
$cache->get($file,$extensionName);
I mosly just let JModel
automatically cache things for me, so my example above may not be entirely correct, but it should be close enough to get somewhere with it.
My examples here are very vague, just a bit of notes on how I would handle this. Kept it simple as I am not 100% sure i totally understand the question, though this should at least help someone :)
#__content
onContentPrepare
. Not sure if that would be the correct event but you get the gist :)onContentPrepare
working, but it needs to connect to github everytime. I have another idea.