id = "hub" name = "hub" homepage = "https://hub.github.com" description = "hub is a command line tool that wraps git in order to extend it with extra features and commands that make working with GitHub easier." executables = ["hub"] [dotfiles] # hub(1), Configuration: hub "will prompt for GitHub username & password the # first time it needs to access the API and exchange it for an OAuth token, # which it saves in ~/.config/hub". github/config.go: $HUB_CONFIG wins, else # $XDG_CONFIG_HOME/hub, else ~/.config/hub. The name has no extension, so the # rule below declares the parser. paths = ["~/.config/hub"] secret = [] side_effect = false # The file is YAML keyed by host — `github.com:` holding a list of accounts, # each with `user`, `oauth_token` and `protocol` (github/config.go, yamlHost). # The user name and the protocol are worth syncing; the token is not. The key # path is written with wildcards because the host key itself contains a dot. [[dotfiles.secret_paths]] file = "~/.config/hub" format = "yaml" match = { key_path = ["*.*.oauth_token"] } # No icon: hub is a third-party wrapper, not a GitHub product, so GitHub's mark # would misattribute it, and the project publishes no logo of its own. [commands] format = 1 label = "hub" description = "Create a GitHub repository from the current directory. Cloning, pull requests and the other hub commands are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false } [[commands.subcommand]] path = ["create"] label = "Create a repository" description = "Create a repository on GitHub and add a git remote for it." [[commands.subcommand.source]] id = "man" kind = "manual" url = "https://hub.github.com/hub-create.1.html" revision = "2026-10" evidence = """ -p, --private Create a private repository. -d, --description DESCRIPTION A short description of the GitHub repository. -h, --homepage HOMEPAGE --remote-name REMOTE Set the name for the new git remote (default: "origin"). -o, --browse Open the new repository in a web browser. -c, --copy """ [[commands.subcommand.field]] id = "name" label = "Repository name" description = "Defaults to the current directory name." type = "string" position = 0 sources = ["man"] [[commands.subcommand.field]] id = "private" label = "Private" type = "boolean" option = ["--private", "-p"] sources = ["man"] [[commands.subcommand.field]] id = "description" label = "Description" type = "string" option = ["--description", "-d"] sources = ["man"] [[commands.subcommand.field]] id = "homepage" label = "Homepage URL" type = "url" option = ["--homepage", "-h"] sources = ["man"] [[commands.subcommand.field]] id = "remote_name" label = "Remote name" type = "string" option = ["--remote-name"] sources = ["man"] [[commands.subcommand.field]] id = "browse" label = "Open in browser" type = "boolean" option = ["--browse", "-o"] sources = ["man"] [[commands.subcommand.task]] id = "private_repo" label = "Create a private repository" fields = ["name", "private", "description"] required = [] set = { private = [true] } [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["name", "private", "description", "homepage"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["remote_name", "browse"]