Skip to main content
General

repo-status

Scan a folder of git repos and report each repo's local dirty/clean state, ahead/behind divergence from upstream, recent activity, and latest CI run status. Read-only: never commits, pushes, or edits. Defaults to the folder argument or your repo root. Use when checking "what's live", "which repos are dirty", or "repo status across my projects". Sibling skills overlap on folder scanning: do NOT use for "what should I work on next" prioritization (use get-work); do NOT use for a recent-activity-only overview without dirty/CI detail (use status). repo-status is the local dirty/ahead/behind + CI-state report.

repo-status

Repo Status

Scan a directory for git repositories with recent activity and report their status.

Invocation

The user may pass a folder path as an argument. Default to $REPO_ROOT, falling back to ~/github if unset.

Steps

  1. Discover repos: Find all directories containing a .git folder (one level deep only; do not recurse into nested repos).

  2. Filter by activity: Only include repos that have commits in the last 7 days on any local branch (git log --all --since='7 days ago' --oneline -1). Skip repos with no recent activity.

  3. For each active repo, gather:

    • Repo name (directory basename)
    • Current branch vs default branch (use gh repo view --json defaultBranchRef -q .defaultBranchRef.name or fall back to checking for main/master)
    • Uncommitted changes: git status --porcelain (staged, unstaged, untracked counts)
    • Unpushed commits: commits ahead of upstream (git rev-list @{u}..HEAD --count 2>/dev/null)
    • Behind upstream: commits behind (git fetch --quiet && git rev-list HEAD..@{u} --count 2>/dev/null)
    • CI status: gh run list --limit 1 --json status,conclusion,name. Show latest workflow run status (passing/failing/in-progress)
  4. Output format: Print a clean, grouped summary. For each repo use this structure:

## repo-name [branch: feature/xyz -> main]
- Status: 3 modified, 1 untracked
- Ahead: 2 commits unpushed
- Behind: 5 commits (needs pull/rebase)
- CI: passing | failing (ci.yml) | in progress
- Action needed: pull, push, commit changes, fix CI
  1. Summary table at the end: one-line-per-repo showing repo name, branch, dirty/clean, ahead/behind counts, CI status, and action needed.

Rules

  • Run git fetch --quiet before checking ahead/behind so counts are current.
  • Run repo checks in parallel where possible (use & and wait in bash).
  • If a directory isn’t a valid git repo or has no remote, note it and move on.
  • Keep output concise; skip sections that have nothing to report (e.g., don’t show “Behind: 0”).
  • Only show repos with recent activity (last 7 days) to keep the report focused.