git-repo-detection
SKILL.md
Git Repository Detection
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/repofor 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
.gitsuffix 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
| Case | Check |
|---|---|
| No remote | git remote get-url origin &>/dev/null |
| Non-GitHub | git remote get-url origin | grep -q github.com |
| Multiple remotes | Use git remote get-url upstream for fork source |
| Submodule | git -C "$(git rev-parse --show-toplevel)" remote get-url origin |
Quick Reference
| Purpose | Command |
|---|---|
| Full identifier (owner/repo) | git remote get-url origin | sed 's/.*[:/]\([^/]*\/[^/]*\)\.git/\1/' |
| Owner only | git remote get-url origin | sed 's/.*[:/]\([^/]*\)\/[^/]*\.git/\1/' |
| Name only | basename $(git remote get-url origin) .git |
| Is GitHub? | git remote get-url origin | grep -q github.com |
| Validate in git repo | git rev-parse --git-dir &>/dev/null |
| List remotes | git remote -v |
| Set origin | git remote set-url origin git@github.com:owner/repo.git |
Troubleshooting
| Problem | Fix |
|---|---|
| Remote not found | git remote add origin git@github.com:owner/repo.git |
| Wrong remote | git remote set-url origin <correct-url> |
| Parse failure | Check 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
Weekly Installs
20
Repository
laurigates/clau…-pluginsGitHub Stars
13
First Seen
Feb 27, 2026
Security Audits
Installed on
opencode20
github-copilot20
codex20
kimi-cli20
gemini-cli20
amp20