Organize docs
Skill rfl-designer/rfl-laravel-skills/skills/docs/organize-docs
Keep the project's docs/ tree clean after merged PRs — propose ADRs for hard-to-reverse decisions, surface new domain terms missing from CONTEXT.md, archive delivered PRDs, fix dead links. Always interactive — never writes without confirmation. Use when user says "organize docs", "limpar docs", "atualizar documentação", or after a batch of PRs merge.From its SKILL.md
npx -y skills add rfl-designer/rfl-laravel-skills --skill organize-docsAssembled 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.
SKILL.md
6.4 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it
Organize Docs
Skill de manutenção da documentação do projeto consumidor. Roda periodicamente (semanal/quinzenal, ou após batch de PRs mergeadas) e mantém a árvore docs/ em ordem sem deixar entropia se acumular.
Sempre interativa. Nunca aplica mudanças sem o usuário ler e aprovar cada uma.
Layout esperado no projeto Laravel
docs/
├── adr/ # decisões arquiteturais (formato grill-with-docs)
│ ├── 0001-event-sourced-orders.md
│ └── 0002-postgres-write-model.md
├── prd/ # PRDs gerados por /to-prd
│ ├── active/ # em andamento
│ └── done/ # entregues, arquivados por ano
│ └── 2026/
├── roadmap/ # gerado por /update-roadmap
│ └── index.html
└── runbooks/ # operacional (deploy, restore, oncall)
CONTEXT.md
Se a árvore não existe, oferecer criá-la na primeira execução.
Pré-requisitos
gitfuncionando, repo com históricoghCLI autenticado (para correlacionar PRs com issues)
Processo
1. Determinar a janela de análise
LAST_RUN=$(test -f .claude/last-organize-docs && cat .claude/last-organize-docs || echo "30 days ago")
git log --since="$LAST_RUN" --merges --pretty="%H %s"
Se nunca rodou, usar últimos 30 dias como default. Janela é configurável.
2. Coletar PRs mergeadas no período
gh pr list --state merged --search "merged:>$LAST_RUN_ISO" --json number,title,body,closedAt,mergedAt,labels,files
Para cada PR, coletar:
- Issues fechadas (
Closes #Nno body) - Arquivos tocados
- ADRs ou PRDs referenciados no body
3. Cinco verificações em paralelo
A. ADRs candidatos
Procurar nos PRs sinais de decisão hard-to-reverse:
- Mudou
composer.json(dependência nova ou major version bump) → candidato - Adicionou tabela ou mudou schema crítico → candidato
- PR body menciona "decidi", "optamos", "escolhi", "em vez de", "trade-off" → candidato
- Mudou config (
config/database.php,config/queue.php,config/auth.php) → candidato
Para cada candidato, aplicar os 3 critérios do grill-with-docs:
- Hard to reverse?
- Surpreendente sem contexto?
- Resultado de trade-off real?
Se 3/3 → propor ADR. Se 2/3 → mencionar como "consideração". Se ≤1 → ignorar.
Output:
📋 ADRs sugeridos:
1. PR #142 "Switch sessions from cookie to Redis-backed"
3 critérios atendidos. Sugestão: docs/adr/0008-redis-sessions.md
Conteúdo proposto:
─────────────────
# Sessions backed by Redis instead of cookies
...
─────────────────
[a]ceitar / [e]ditar / [p]ular
B. Termos novos para CONTEXT.md
git diff "$LAST_RUN_REF..HEAD" -- 'app/**/*.php' | grep -E '^\+(class|enum|interface|trait) ' | sort -u
Para cada classe/enum/interface novo:
- Existe no
CONTEXT.md? - É um termo de domínio (não framework)? Heurística: NÃO é Controller, Request, Resource, ServiceProvider, Listener.
- Se domínio E ausente → propor adicionar.
📚 Termos novos detectados:
- Proposal (app/Models/Proposal.php) — não está em CONTEXT.md
- ProposalStatus (app/Enums/ProposalStatus.php) — não está em CONTEXT.md
- ProposalSent (app/Events/ProposalSent.php) — provavelmente domínio, propor adicionar?
Sugestão para CONTEXT.md:
**Proposal**:
Documento comercial enviado a um cliente potencial, contendo módulos e features cotados.
_Avoid_: orçamento, cotação
[a]ceitar / [e]ditar / [p]ular
C. PRDs a arquivar
Para cada arquivo em docs/prd/active/:
- Issue PRD (referenciada no início do arquivo) está fechada?
- Todas as issues-slice filhas estão fechadas?
Se sim → propor mover para docs/prd/done/<ano>/.
📦 PRDs a arquivar:
- docs/prd/active/comment-thread.md
Issue PRD #42: closed
3 slices filhas (#43, #44, #45): todas closed
Propor mover para docs/prd/done/2026/comment-thread.md
[a]ceitar / [p]ular
D. Links quebrados
Escanear todo arquivo .md em docs/, CONTEXT.md, README.md por:
- Links relativos (
./foo.md,../bar.md) que apontam para arquivos inexistentes - Wikilinks
[[name]]sem arquivo correspondente em memory ou docs - Issues mencionadas (
#N) que retornam 404 nogh issue view
🔗 Links quebrados:
- docs/adr/0003-foo.md:12 → ./bar.md (não existe)
- README.md:45 → #999 (issue não encontrada — talvez referência errada?)
NÃO autocorrigir. Apenas reportar — o usuário decide se renomeia, cria o destino, ou remove o link.
E. ADRs com status estale
Para cada ADR:
- Status
proposedhá mais de 60 dias → sugerir transicionar paraacceptedousuperseded - Status
supersededmas semsuperseded by ADR-NNNNno frontmatter → sugerir adicionar
📜 ADRs com status estale:
- docs/adr/0003-event-sourcing.md — status: proposed (há 87 dias)
Sugerir: alguém implementou? Atualizar para accepted ou marcar como rejected?
4. Apresentar tudo num batch
Mostrar todas as 5 categorias numeradas. Usuário pode:
- Aceitar tudo (
a) - Aceitar item específico (
1,2, etc.) - Pular tudo (
p) - Editar antes de aceitar (
e <numero>)
5. Aplicar e marcar
Após aplicar:
- Atualizar
.claude/last-organize-docscom timestamp atual - Sugerir commit com mensagem
docs: organize-docs sweep <data> - Sugerir rodar
/update-roadmapse PRDs foram arquivados ou issues mudaram de status
Configuração opcional
.claude/organize-docs-config.json:
{
"window_days": 30,
"skip_adr_suggestions": false,
"skip_term_suggestions": false,
"auto_archive_prds": false,
"context_md_path": "CONTEXT.md",
"domain_class_paths": ["app/Models", "app/Enums", "app/Events", "app/Actions"]
}
auto_archive_prds: true move PRDs done sem perguntar (ainda mostra o que moveu).
Quando NÃO rodar
- Durante uma slice ativa de
/tdd— espera o PR mergear - Em repo sem
docs/— primeiro pergunta se quer criar a estrutura
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.