AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Ag 13 Limpar Codigo

skill-andregusman-raiz-a-gusman-claude-ag-13-limpar-codigo · by andregusman-raiz

Maquina autonoma de limpeza de dead code (Knip + AST + bundle, confidence tiers, PRs atomicos). Use para tech debt, hand-off, reducao de bundle, cleanup pos-spike, auditoria de saude. Modo --target=harness audita dead skills/hooks/MCPs do proprio Claude Code.

No reviews yet
0 installs
41 views
0.0% view→install

Install

$ agentstack add skill-andregusman-raiz-a-gusman-claude-ag-13-limpar-codigo

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-andregusman-raiz-a-gusman-claude-ag-13-limpar-codigo)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Ag 13 Limpar Codigo? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

LIMPAR CODIGO — Maquina Autonoma de Dead Code Cleanup

Invocacao

/ag-13-limpar-codigo                          # Diagnostico + plano (default report-only) — target=code
/ag-13-limpar-codigo --triage-only            # So lista, sem plano nem fix
/ag-13-limpar-codigo --apply-quick-wins       # P0+P1 high-confidence auto-aplicados (PRs atomicos)
/ag-13-limpar-codigo --full-pipeline          # Todos os Ps com gates entre PRs (max ciclos = 2)
/ag-13-limpar-codigo --create-issues          # Cria GitHub issues por P do plano
/ag-13-limpar-codigo --resume                 # Retoma de limpar-codigo-state.json
/ag-13-limpar-codigo --target=harness         # Limpa dead skills/hooks/MCPs do proprio harness Claude Code
/ag-13-limpar-codigo categoria:components     # So componentes nunca renderizados
/ag-13-limpar-codigo categoria:imports        # So unused imports
/ag-13-limpar-codigo categoria:state          # So useState/useReducer morto
/ag-13-limpar-codigo categoria:comments       # So comentarios sem explicacao
/ag-13-limpar-codigo categoria:duplicacao     # So duplicacao de codigo (jscpd)

Targets

| Target | Escopo | Delega para | |---|---|---| | code (default) | Codigo da aplicacao no CWD | Pipeline 5-fases proprio | | harness | ~/Claude/.claude/skills/, hooks/, rules/, MCPs instalados | ag-otimizar-harness |

--target=harness — comportamento

  1. Spawna ag-otimizar-harness (mesmo modo: triage / apply-quick-wins / full)
  2. Para --apply-quick-wins em harness:
  • Aplica markers cache_control: ephemeral em skills elegiveis (delega ag-otimizar-cache)
  • Marca metadata.deprecated: true em skills com 0 invocacoes em 90 dias
  • Sinaliza MCPs com ratio MULTI-TOOL SCAN -> AST CUSTOM -> CONFIDENCE RANKING -> APPLY FIXES -> SHIP

↑ │ └──────────┘ (max 2 cycles)


1. **DISCOVERY**: detecta stack (Next/Vite/Astro/Remix), entry points, monorepo, instala Knip + jscpd se ausentes, gera `knip.json` + `.jscpd.json` com ignores conservadores
2. **MULTI-TOOL SCAN**: paralelo via Team — Knip + ts-prune + depcheck + ESLint --no-fix + Madge + bundle analyzer + jscpd. Output JSON unificado
3. **AST CUSTOM**: TS Compiler API para 4 categorias do pedido especifico:
   - Componentes nunca renderizados (JSX traversal a partir de entry points)
   - State morto (useState/useReducer com setter sem call ou value sem leitura)
   - Props nao usados (bonus DX)
   - Comentarios com codigo sem prefixo WHY/TODO/FIXME/HACK/NOTE/JSDoc/SPDX
   - Blocos duplicados (jscpd cross-arquivo, threshold > 50 tokens)
4. **CONFIDENCE RANKING**: combina sinais (tools que concordam + bundle confirmation + git churn + cobertura). HIGH (3+ tools) / MEDIUM (1-2) / LOW (suspeita, review humano)
5. **APPLY FIXES**: aplica fixes em PRs atomicos por categoria, com quality gates entre batches (typecheck + lint + test + build + bundle delta). Se gate falha -> revert + alternativa

## Modos (auto-detectados se nao especificados)

| Modo | Sinais / flag | Comportamento |
|------|---------------|---------------|
| triage | `--triage-only` ou primeiro run | So scan + report. NAO aplica fix. NAO gera plano |
| diagnostico | default (sem flag) | Scan + report + plano P0-P5. NAO aplica fix |
| quick-wins | `--apply-quick-wins` | Aplica P0 (setup) + P1 (high-confidence) automaticamente |
| full | `--full-pipeline` | Aplica P0-P5 com user approval gates em P2/P3/P4 |
| issues | `--create-issues` | Cria GitHub issues do plano (1 issue por P, sub-issues por T) |
| categoria | `categoria:X` | Scan + fix so da categoria especificada |

## Categorias detectadas

| Categoria | Tool primaria | Cross-check | Confidence default |
|-----------|---------------|-------------|--------------------|
| Unused imports | ESLint `unused-imports` | Knip | HIGH (auto-fix em P1) |
| Unused exports | Knip | ts-prune | HIGH |
| Unused npm deps | Knip / depcheck | manual review | MEDIUM (cuidado peer deps) |
| Componentes nunca renderizados | Knip + AST custom | bundle analyzer + react-scanner | MEDIUM (review por feature) |
| useState morto (setter sem call) | AST custom | ESLint | LOW (refs/closures) |
| useState morto (value sem leitura) | AST custom | ESLint | LOW |
| Props nunca usados | AST custom | TS LSP | MEDIUM |
| Comentarios sem WHY | regex + AST | manual review | LOW |
| Arquivos orfaos | Knip + Madge | bundle | MEDIUM |
| Types nunca usados | Knip | ts-prune | HIGH |
| Branches de feature flag morta | grep `if (false)` + env vars antigas | manual | LOW |
| Blocos duplicados (DRY) | jscpd (> 50 tokens, > 5 linhas) | AST diff + manual review | MEDIUM (refactor humano) |

## Confidence tiers (regras de auto-fix)

- **HIGH** (3+ tools concordam, sem dynamic refs, no bundle): pode auto-fix em modo `--apply-quick-wins`
- **MEDIUM** (1-2 tools, alguma ambiguidade): requer user approval per-batch antes de aplicar
- **LOW** (suspeita, review humano obrigatorio): nunca auto-fix, so listar no plano

## Whitelist de protecao (NUNCA tocar)

**/.test. **/.spec. /__tests__/ /__fixtures__/ **/.stories. **/.generated. /__generated__/ prisma/client/ /codegen/ /.d.ts (publicos) /index.ts (barrels) /middleware.ts /page.tsx /layout.tsx /route.ts /error.tsx /not-found.tsx /loading.tsx /template.tsx /global.css */globals.css LICENSE SPDX headers Copyright headers


## Framework awareness (Next.js App Router exemplo)

Plugin Knip do framework SEMPRE ativo. Conhece convencoes:
- `app/**/page.tsx` -> entry point implicito
- `app/**/layout.tsx`, `error.tsx`, `not-found.tsx`, `loading.tsx`, `template.tsx` -> framework files
- `app/**/route.ts` -> API route
- `middleware.ts` -> entry point
- `next.config.{js,ts,mjs}` -> config
- Server Actions (`"use server"`)
- `generateStaticParams`, `generateMetadata` -> framework exports

Para Vite/Remix/Astro: plugins equivalentes em `knip.json`.

## Pipeline detalhado

### Fase 1 — Discovery
```bash
# Detectar stack
- ler package.json -> dependencies/devDependencies
- detectar Next/Vite/Astro/Remix/CRA/SvelteKit
- detectar monorepo (workspaces, turbo.json, nx.json)
- detectar entry points (app/, pages/, src/index.ts, scripts em package.json)

# Instalar Knip se ausente
$PM add -d knip @types/node

# Gerar knip.json conservador
- include entry points detectados
- ignores defensivos (whitelist acima)
- plugins do framework detectado

# Capturar baseline
- LOC total (cloc ou wc -l em src/)
- bundle size atual ($PM run build && du -sh .next/ ou dist/)
- test coverage atual (se houver)
- git churn (ultimos 12m por arquivo)

Fase 2 — Multi-tool Scan (paralelo via Team)

Spawnar ag-escanear-morto-codigo com isolation: "worktree". Sub-tarefas paralelas:

  • bunx knip --reporter json > knip-output.json
  • bunx ts-prune --json > tsprune-output.json (cross-check)
  • bunx depcheck --json > depcheck-output.json (cross-check)
  • bunx eslint --ext .ts,.tsx --no-fix --format json > eslint-output.json
  • bunx madge --circular --json src > madge-circular.json
  • bunx madge --orphans --json src > madge-orphans.json
  • $PM run build && bunx @next/bundle-analyzer ou bunx rollup-plugin-visualizer
  • bunx jscpd --reporters json --min-tokens 50 --min-lines 5 --gitignore src/ app/ components/ > jscpd-output.json (DRY/duplicacao)

Unificar em dead-code-findings-raw.json.

Fase 3 — AST Custom Scan

Spawnar agente com TS Compiler API. Para cada arquivo .tsx:

A — Componentes nunca renderizados:

// Pseudocodigo
const components = collectExportedComponents(srcFiles)
const usages = traverseJsxFromEntryPoints(entryPoints)
const orphans = components.filter(c => !usages.has(c.name))
// Cross-check: dynamic imports, lazy(), next/dynamic

B — useState morto:

// Para cada chamada de useState/useReducer:
const [state, setState] = useState(initial)
// Verificar:
// - setState e chamado em alguma posicao? (escopo do componente + closures)
// - state e lido em algum lugar? (JSX, callbacks, useEffect deps)
// Se um dos dois eh false -> candidato (LOW confidence)

C — Props nao usados:

// Para cada componente com Props interface:
// - listar props declarados
// - listar props acessados no body
// - diff = props nao usados

D — Comentarios sem WHY:

// Regex: ^\s*//.*[(){};=].*$ (parece codigo)
// AND nao tem prefixo: TODO|FIXME|HACK|NOTE|XXX|@param|@returns|SPDX|Copyright|eslint-disable
// AND bloco > 2 linhas consecutivas
// -> candidato comentario sem explicacao

Output: ast-custom-findings.json mergeado em dead-code-findings.json.

Fase 4 — Confidence Ranking

Combinar sinais em dead-code-findings.json:

{
  "category": "component-orphan",
  "file": "src/components/UnusedCard.tsx",
  "name": "UnusedCard",
  "signals": {
    "knip": true,
    "ts-prune": true,
    "ast-custom": true,
    "bundle-absent": true,
    "git-churn": "0 commits in 14 months",
    "test-coverage": 0
  },
  "confidence": "HIGH",
  "recommendation": "delete",
  "loc": 87
}

Gerar:

  • docs/diagnosticos/dead-code-YYYY-MM-DD.md (relatorio com tabelas, contagens, exemplos)
  • docs/plans/dead-code-refactor-plan-YYYY-MM-DD.md (arvore P0-P5)
  • dead-code-findings.json (machine-readable)
  • limpar-codigo-state.json (state para --resume)

Fase 5 — Apply Fixes

So executa se modo for --apply-quick-wins ou --full-pipeline.

Spawnar ag-aplicar-fix-codigo para cada P em sequencia (NUNCA paralelo entre Ps):

P0 — Setup baseline (1 PR pequeno, no-op funcional)

  • chore(deadcode): add knip + baseline report

P1 — Quick wins HIGH confidence

  • PR 1: chore(deadcode): remove unused imports (eslint --fix)
  • PR 2: chore(deadcode): remove unused exports (Knip + ts-prune cross-validated)
  • PR 3: chore(deadcode): remove orphan deps
  • Quality gate apos cada PR. Falha -> revert + alternativa.

P2 — Componentes nunca renderizados (user approval per batch de 5)

  • PR por feature area: chore(deadcode): remove orphan components in
  • Confirma com user antes de cada batch via TaskUpdate

P3 — useState morto (LOW confidence, user approval per item)

  • PR por componente afetado, commits pequenos

P4 — Comentarios sem WHY (review manual, LOW confidence)

  • PR consolidado: chore(deadcode): remove dead code comments

P4.5 — Duplicacao (DRY refactor) (jscpd findings, MEDIUM confidence, user approval per cluster)

  • PR por cluster de duplicacao: refactor(dry): extract shared by N occurrences
  • jscpd identifica blocos; humano decide a abstracao (util, hook, component)
  • NUNCA auto-aplica — apenas sugere fix proposto (snippet + suggested location)
  • Cross-check: garantir que abstracao nao quebra tests; quality gate completo

P5 — Hardening (preventivo)

  • PR: adicionar Knip ao CI em modo warning
  • PR: eslint-plugin-unused-imports em pre-commit (lint-staged)
  • PR: ADR documentando politica

Quality Gates entre PRs

# Apos CADA PR de fix:
$PM run typecheck && $PM run lint && $PM run test && $PM run build

# Bundle delta:
echo "Bundle: $(du -sh .next/static)" >> dead-code-progress.md

# Se algum gate falha:
git revert HEAD
echo "Gate failed at $CATEGORY, reverted. Logs: ..." >> dead-code-progress.md
# Continua com proxima categoria

Propriedades MERIDIAN

  • Autonomo: scan + plano sem perguntar; aplicacao gated por modo
  • Convergente: SCAN -> APPLY -> VERIFY loop ate green (max 2 cycles)
  • State persistente: limpar-codigo-state.json — resume de onde parou
  • Self-healing: regressao em quality gate -> revert + alternativa
  • Artifacts: PRs atomicos, diagnostico, plano, JSON, issues opt-in
  • Confidence-aware: nunca auto-fix LOW; gated approval para MEDIUM

Output

LIMPAR CODIGO COMPLETO
  Modo: [triage|diagnostico|quick-wins|full|issues|categoria:X]
  Stack detectada: [Next 16 / Vite 5 / etc.]
  Findings totais: [N]
    HIGH: [X] | MEDIUM: [Y] | LOW: [Z]
  Por categoria:
    Unused imports: [N]
    Unused exports: [N]
    Orphan components: [N]
    Dead state: [N]
    Dead comments: [N]
    Orphan files: [N]
    Unused deps: [N]
    Blocos duplicados: [N clusters / N% codebase]
  Diagnostico: docs/diagnosticos/dead-code-YYYY-MM-DD.md
  Plano: docs/plans/dead-code-refactor-plan-YYYY-MM-DD.md
  PRs aplicados: [N] (se modo apply)
  GitHub issues: [N] (se --create-issues)
  LOC removidas: [N]
  Bundle delta: [-XXX KB]
  Build time delta: [-Ys]
  Ciclos: [N]
  Status: GREEN | PARTIAL | NEEDS_REVIEW

Riscos e mitigacoes (resumo)

| Risco | Mitigacao | |-------|-----------| | Deletar API publica | Whitelist **/index.ts + entries explicitos | | Dynamic imports perdidos | Knip ignoreDependencies + manual review de strings import() | | Convencao de framework deletada | Plugin Knip do framework sempre ativo | | State usado via ref/closure | Confidence LOW por default — review humano | | License/SPDX header removido | Regex exclui /*!, // SPDX-, Copyright | | Test fixtures deletadas | Glob exclude robusto na whitelist | | Codigo gerado | Glob exclude *.generated.*, prisma/, __generated__/ | | Falso positivo causa regressao | Quality gate completo + smoke E2E + revert automatico |

Comparacao com plugins / outras machines

| | ag-13-limpar-codigo | code-simplifier (plugin) | ag-2-corrigir debt | |---|---|---|---| | Foco | Dead code elimination | Simplificacao de logica | Tech debt geral | | Tools | Knip + AST + bundle | Manual reasoning | grep + manual | | Output | PRs atomicos por categoria | 1 PR de simplificacao | 1 PR de cleanup | | Confidence tiers | Sim (HIGH/MED/LOW) | Nao | Nao | | GitHub issues | Sim (--create-issues) | Nao | Nao | | Quando usar | "tem coisa morta no codigo" | "esse codigo esta complicado" | "tem debt acumulado" |

Sub-agents internos

  • ag-escanear-morto-codigo — executor de scan multi-tool (read-only, paralelo)
  • ag-aplicar-fix-codigo — applier com gates e PR atomization (escrita, sequencial entre Ps)

Helper scripts

  • ~/Claude/.claude/scripts/dead-code/scan-orchestrator.sh — orquestra Knip + ts-prune + ESLint + bundle
  • ~/Claude/.claude/scripts/dead-code/ast-custom-scan.ts — TS Compiler API para 4 categorias custom
  • ~/Claude/.claude/scripts/dead-code/apply-fix-batch.sh — aplica fixes em batches com quality gates

Referencias

  • Knip docs: https://knip.dev
  • "Software Design X-Rays" (Adam Tornhill) — code health, churn analysis
  • "Working Effectively with Legacy Code" (Michael Feathers) — characterization tests
  • ESLint plugin unused-imports: https://github.com/sweepline/eslint-plugin-unused-imports
  • Mikado Method: https://mikadomethod.info/

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.