Yeah I think this could just be simplified a lot, because the fact it's a composer.json-equivalent only applies to the way you describe repositories really (and homepage/name if one wants to be picky), but they are kinda different things that have commonalities for consistency rather than one and the same.