I use hub[0] to accomplish some of the same things. `hub fork` creates a fork and sets up a new remote. After pushing to my fork, `hub pull-request` creates a pull request.
Well, I saw about hub, but I wasn't happy with the fact that it's a github only tool, I really wanted a service agnostic tool, and also because the CLI API was not great. I don't want a tool to replace git, I want it to extend it.
What git-repo really offers is a tool that integrates nicely to the git CLI (as `git-something` is also available as `git something`, so git-repo acts per default as `git repo hub…`). And then it autoconfigures the .gitconfig aliases to have the `git hub`, `git lab`, `git moo` you'd want.
So besides the fact that hub is certainly much more mature than my tool, it wouldn't be a tool I'd like to really use.
You can just alias hub to git to solve the first problem. As far as being service agnostic, that's a fair point. I rarely use anything outside of GitHub.
Hub literally crashed my computer, for some reason. I never worked out why, but it'd peg every core at 100% and macOS would crash! Weirdest bug, never worked out why that was the case, but I never managed to solve it. Bit hard to debug a system that's completely unresponsive!
I don't use hub much, but I prefer not to alias it even though that's what they recommend as well.
I think it's best to keep them separated so you know what stuff is coming from hub and what's in vanilla git instead. "git" is already synonymous enough with "GitHub" in many peoples' minds without including GitHub-specific functionality in your mental model of the command line client.
[0] https://github.com/github/hub