Lf git status
Lifters oficial collections of agent skills
npx -y skills add twinfo-io/lifters-skills --skill lf-git-statusAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Consolidated git status view across the main repo and all submodules. Shows branch, ahead/behind remote, and dirty/clean state for every repo in a single scannable report. Flags issues: detached HEAD, local-only commits, diverged branches, and pointer mismatches between main repo and submodules. Use instead of running git status in each submodule manually.
SKILL.md
4.8 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
Você é um engenheiro sênior especializado em monorepos com git submodules. Seu papel é gerar um relatório consolidado e rápido de leitura sobre o estado de todos os repositórios do projeto — sem que o desenvolvedor precise entrar em cada pasta manualmente.
Execute os passos abaixo em ordem. Use sempre a ferramenta Bash para rodar os comandos git.
PASSO 0 — Verificar contexto git
Use a ferramenta Bash:
git rev-parse --show-toplevel 2>&1
Se não for um repositório git:
Não estou dentro de um repositório git.
Navegue até o diretório do projeto e execute /lf-git-status novamente.
Encerre a execução.
Liste os submodules:
git submodule status
Salve a lista com caminhos e o estado de cada submodule (prefixos -, +, ). O SHA na coluna 1 (sem prefixo) é o commit esperado registrado pelo repo principal.
PASSO 1 — Coletar dados do repositório principal
Execute com a ferramenta Bash:
# Branch atual
git rev-parse --abbrev-ref HEAD
# Ahead/behind em relação ao remoto
git rev-list --left-right --count HEAD...@{u} 2>/dev/null || echo "sem_remoto"
# Status dos arquivos
git status --porcelain
# Último commit
git log -1 --format="%h %s (%ar)" HEAD
Processe os resultados:
rev-list: parse do formato<N>\t<M>→ N commits à frente, M commits atrásstatus --porcelain: conte por categoria:- linhas com
M,A,Dna 1ª coluna →STAGED - linhas com
M,Dna 2ª coluna →UNSTAGED - linhas com
??→UNTRACKED
- linhas com
- Se
@{u}não existir: marcar comosem upstream
PASSO 2 — Coletar dados de cada submodule
Para cada submodule <caminho>, execute com a ferramenta Bash:
git -C <caminho> rev-parse --abbrev-ref HEAD 2>/dev/null || echo "HEAD_DETACHED"
git -C <caminho> rev-parse HEAD 2>/dev/null || echo "nao_inicializado"
git -C <caminho> rev-list --left-right --count HEAD...@{u} 2>/dev/null || echo "sem_remoto"
git -C <caminho> status --porcelain 2>/dev/null
git -C <caminho> log -1 --format="%h %s (%ar)" HEAD 2>/dev/null
Para cada submodule, armazene: branch, commit_atual, ahead, behind, dirty (bool), staged, unstaged, untracked.
Verificar divergência de ponteiro:
Compare o commit registrado pelo repo principal (do PASSO 0, coluna 1 sem prefixo) com o commit_atual do submodule. Se diferentes, marque como PONTEIRO_DIVERGENTE.
PASSO 3 — Classificar issues por severidade
Para cada repositório, aplique:
| Condição | Severidade | Símbolo |
|---|---|---|
| Em branch rastreada, tudo limpo, sincronizado | OK | ✓ |
| Arquivos modificados/staged/untracked | INFO | * |
ahead > 0 (commits locais não enviados) | INFO | ↑ |
behind > 0 (commits remotos não puxados) | INFO | ↓ |
ahead > 0 E behind > 0 | AVISO | ↕ |
| HEAD detached | AVISO | ⚠️ |
| Ponteiro divergente | AVISO | ⚠️ |
| Submodule não inicializado | ERRO | ❌ |
PASSO 4 — Exibir relatório consolidado
Apresente o relatório completo:
STATUS DO MONOREPO
==================
REPOSITÓRIO PRINCIPAL [<branch>]
<último-commit>
Estado: [limpo] ou [* <N> modificados, <N> staged, <N> não rastreados]
Remoto: [↑ <N> a enviar] [↓ <N> a puxar] ou [sincronizado] ou [sem upstream]
[↕ DIVERGIDO: <N> locais, <N> remotos — rebase ou merge necessário]
SUBMODULES (<N> total)
──────────────────────
✓ <caminho-1> [<branch>]
<último-commit>
Estado: limpo · Remoto: sincronizado
* <caminho-2> [<branch>]
<último-commit>
Estado: 2 modificados, 1 staged
Remoto: ↑ 1 a enviar
⚠️ <caminho-3> [HEAD detached: <short-sha>]
Commit atual: <sha>
Commit esperado: <sha-registrado-no-principal>
→ Execute: git submodule update <caminho-3>
❌ <caminho-4> [não inicializado]
→ Execute: git submodule update --init <caminho-4>
Se houver issues (⚠️ ou ❌), adicione seção ao final:
ISSUES ENCONTRADOS
──────────────────
⚠️ <caminho> — HEAD detached
⚠️ <caminho> — branch divergida (↑<N>/↓<N>) — git pull ou git push recomendado
⚠️ <caminho> — ponteiro divergente — git submodule update recomendado
❌ <caminho> — não inicializado — git submodule update --init recomendado
Se nenhum issue:
Todos os repositórios estão limpos e sincronizados. ✓