git-repo-detection
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.
- License 许可
- MIT
- 最近更新
- 2026-11-13
- Stars
- ★ 59
- Forks
- 6
01 前言 Front Matter
- name
- git-repo-detection
- created
- 1765843200000
- modified
- 1777075200000
- reviewed
- 1777075200000
- description
- 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.
- allowed-tools
- Bash, Read, Grep
- user-invocable
- false
02 资源文件 4
- 许可证LICENSE1.0 KB
- 参考文档REFERENCE.md3.5 KB
- 参考文档SOURCE.md370 B
- 参考文档TRUST.auto.yaml2.2 KB
03 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 calls |
Use gh-cli-agentic once you already have the owner/repo identifier |
| Handling GitHub Enterprise host URLs alongside github.com | Use git-fork-workflow when the question is fork vs upstream identification |
Resolving the repo identifier to pass with gh -R to avoid remote-required errors |
Use 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 calls | Use 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/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
04 同仓库更多 Skills
kitty-show-image
Show the user an image with a note on what to judge, via a file send or a labelled kitty tab. Use when the user must see an image, or icat fails with no /dev/tty.
kitty-session-persistence
Snapshot and restore kitty terminal sessions on macOS. Use when surviving WindowServer hangs without losing tabs, configuring snapshots, or restoring after a force-reboot.
kitty-remote-control
Safe kitty remote control from an agent — read panes with kitty @ ls/get-text, notify, and never mutate the live terminal unasked. Use when running inside kitty.
docs-reference-check
Dangling doc-reference gate: flag markdown naming repo paths or relative links that no longer exist. Use when docs cite moved/deleted files, or wiring a doc-drift lint.
youtube-upload
Upload a video to YouTube via the Data API v3 and edit its title, description, tags or thumbnail afterwards. Use when publishing or retitling a YouTube video.
youtube-studio-share
Share a private YouTube video with a whole Google Workspace organization by scripting YouTube Studio in the browser. Use when a video must be org-only.