git-repo-detection

v2026.09.24

Detect GitHub repo owner/name from git remotes. Use when needing the owner/repo identifier for GitHub CLI or API calls, especially across multiple repos.

GitHub
安装命令
npx skhub add laurigates/git-repo-detection
Markdown
SKILL.md

Git Repository Detection

When to Use This Skill

Use this skill when...Use the alternative when...
Extracting owner/repo from a git remote (HTTPS or SSH URL) for gh callsUse gh-cli-agentic once you already have the owner/repo identifier
Handling GitHub Enterprise host URLs alongside github.comUse git-fork-workflow when the question is fork vs upstream identification
Resolving the repo identifier to pass with gh -R to avoid remote-required errorsUse git-cli-agentic for raw git remote -v parsing if you need URL details
Detecting which repo a script is running inside before issuing API callsUse git-coworker-check to detect concurrent agents in the same checkout

Expert knowledge for detecting and extracting GitHub repository information from git remotes, including repository name, owner, and full identifiers.

Core Expertise

Repository Identification

  • Extract owner and repository name from git remotes
  • Parse GitHub URLs (HTTPS and SSH)
  • Handle GitHub Enterprise URLs
  • Format as owner/repo for CLI/API usage

URL Parsing

  • Parse HTTPS URLs: https://github.com/owner/repo.git
  • Parse SSH URLs: git@github.com:owner/repo.git
  • Handle custom domains: https://github.enterprise.com/owner/repo.git
  • Clean .git suffix and extra paths

Essential Commands

Get Remote URLs

# List all remotes
git remote -v

# Get origin URL
git remote get-url origin

# Get specific remote
git remote get-url upstream

# Show remote details
git remote show origin

Extract Repository Name

# From HTTPS URL
git remote get-url origin | sed 's/.*\/\([^/]*\)\.git/\1/'

# From SSH URL
git remote get-url origin | sed 's/.*:\([^/]*\/[^/]*\)\.git/\1/' | cut -d'/' -f2

# From any URL (owner/repo format)
git remote get-url origin | sed 's/.*[:/]\([^/]*\/[^/]*\)\.git/\1/'

# Just repository name (no owner)
basename $(git remote get-url origin) .git

Extract Owner

# From any URL
git remote get-url origin | sed 's/.*[:/]\([^/]*\)\/[^/]*\.git/\1/'

# Alternative with awk
git remote get-url origin | awk -F '[:/]' '{print $(NF-1)}'

Get Full Identifier (owner/repo)

# Standard format for GitHub CLI/API
git remote get-url origin | sed 's/.*[:/]\([^/]*\/[^/]*\)\.git/\1/'

# With validation
REPO=$(git remote get-url origin 2>/dev/null | sed 's/.*[:/]\([^/]*\/[^/]*\)\.git/\1/')
echo "${REPO:-Unknown}"

# Store in variable
REPO_FULL=$(git remote get-url origin | sed 's/.*[:/]\([^/]*\/[^/]*\)\.git/\1/')
echo "Repository: $REPO_FULL"

URL Format Examples

HTTPS URLs

# Standard GitHub
https://github.com/owner/repo.git
# Extract: owner/repo

# Without .git suffix
https://github.com/owner/repo
# Extract: owner/repo

# GitHub Enterprise
https://github.company.com/owner/repo.git
# Extract: owner/repo

SSH URLs

# Standard SSH
git@github.com:owner/repo.git
# Extract: owner/repo

# Custom SSH port
ssh://git@github.com:443/owner/repo.git
# Extract: owner/repo

# Enterprise SSH
git@github.company.com:owner/repo.git
# Extract: owner/repo

Parsing Patterns

Universal Parser (HTTPS or SSH)

# Works for both HTTPS and SSH
parse_repo() {
  local url="$1"
  # Remove .git suffix
  url="${url%.git}"
  # Extract owner/repo
  if [[ "$url" =~ github\.com[:/]([^/]+/[^/]+) ]]; then
    echo "${BASH_REMATCH[1]}"
  elif [[ "$url" =~ :([^/]+/[^/]+)$ ]]; then
    echo "${BASH_REMATCH[1]}"
  fi
}

REPO=$(parse_repo "$(git remote get-url origin)")
echo "$REPO"

Robust Extraction with sed

# Handle both HTTPS and SSH, with or without .git
git remote get-url origin \
  | sed -E 's#.*github\.com[:/]##; s#\.git$##'

Using awk

# Split by : or / and get last two components
git remote get-url origin \
  | awk -F'[/:]' '{print $(NF-1)"/"$NF}' \
  | sed 's/\.git$//'

Real-World Usage

With GitHub CLI

# Get repo identifier for gh commands
REPO=$(git remote get-url origin | sed 's/.*[:/]\([^/]*\/[^/]*\)\.git/\1/')

# Use with gh
gh repo view "$REPO"
gh issue list --repo "$REPO"
gh pr list --repo "$REPO"

# Or use current directory (gh auto-detects)
gh repo view

For API usage, multiple remotes, scripts, aliases, and integration examples, see REFERENCE.md.

Edge Cases

CaseCheck
No remotegit remote get-url origin &>/dev/null
Non-GitHubgit remote get-url origin | grep -q github.com
Multiple remotesUse git remote get-url upstream for fork source
Submodulegit -C "$(git rev-parse --show-toplevel)" remote get-url origin

Quick Reference

PurposeCommand
Full identifier (owner/repo)git remote get-url origin | sed 's/.*[:/]\([^/]*\/[^/]*\)\.git/\1/'
Owner onlygit remote get-url origin | sed 's/.*[:/]\([^/]*\)\/[^/]*\.git/\1/'
Name onlybasename $(git remote get-url origin) .git
Is GitHub?git remote get-url origin | grep -q github.com
Validate in git repogit rev-parse --git-dir &>/dev/null
List remotesgit remote -v
Set origingit remote set-url origin git@github.com:owner/repo.git

Troubleshooting

ProblemFix
Remote not foundgit remote add origin git@github.com:owner/repo.git
Wrong remotegit remote set-url origin <correct-url>
Parse failureCheck raw URL: git remote get-url origin

Related Skills

  • github MCP - Use extracted repo name with GitHub API
  • github-actions-inspection - Pass repo to gh CLI commands
  • git-workflow - Identify repo for workflow operations
发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

MIT

源路径

git-plugin/skills/git-repo-detection

默认分支

main

最新提交

1668324

Tree SHA

b2d4cc3