# Git Sync Manager 1 Repository Discovery From Gitignore

> Sub-skill of git-sync-manager: 1. Repository Discovery from .gitignore.

- Skill: `vamseeachanta/git-sync-manager-1-repository-discovery-from-gitignore` (Agent Skill)
- Install (CLI): `npx skillmds@latest add vamseeachanta/git-sync-manager-1-repository-discovery-from-gitignore`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vamseeachanta/git-sync-manager-1-repository-discovery-from-gitignore/raw
- Safety review: PASS (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: vamseeachanta (https://skillmd.com/u/vamseeachanta)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/vamseeachanta/git-sync-manager-1-repository-discovery-from-gitignore

---


# 1. Repository Discovery from .gitignore

## 1. Repository Discovery from .gitignore


Automatically discover repositories listed in .gitignore:

```bash
#!/bin/bash
# ABOUTME: Discover repositories from .gitignore patterns
# ABOUTME: Parses directory entries and validates git repos

WORKSPACE_ROOT="${1:-.}"

# Discover repositories from .gitignore
discover_repos() {
    local repos=()

    while IFS= read -r line; do
        # Skip comments and empty lines
        [[ "$line" =~ ^[[:space:]]*# ]] && continue
        [[ -z "$line" ]] && continue

        # Extract repo name (before the /)
        local repo_name="${line%%/*}"
        [[ -z "$repo_name" ]] && continue

        # Check if directory exists and is a git repo
        if [[ -d "$WORKSPACE_ROOT/$repo_name/.git" ]]; then
            repos+=("$repo_name")
        fi
    done < <(grep -v "^[[:space:]]*#" "$WORKSPACE_ROOT/.gitignore" | grep "/" | head -100)

    printf '%s\n' "${repos[@]}"
}

# Usage
REPOS=($(discover_repos))
echo "Found ${#REPOS[@]} repositories"
```

