Skip to content

feat: TypeScript stack support #2

Description

@lipex360x

Contexto

Hoje validamos Python e Bash. Adicionar suporte a TypeScript seguindo a mesma dinâmica.

O que precisa ser feito

Checkers customizados (extensão dos existentes em Python)

  • check-abbrev — adicionar suporte a .ts / .tsx (regex para declarações de variável/função TS)
  • check-comments — adicionar suporte a .ts / .tsx (comentários // e /* */)
  • check-size — adicionar .ts / .tsx às extensões reconhecidas

Ferramentas do ecossistema (Node.js)

  • Hook tsc — type checking (language: node)
  • Hook eslint — linting (language: node)
  • Hook prettier — formatação (language: node)
  • Hook knip — dead code (language: node)
  • Hook jscpd — duplicate code detection (cross-language, covers TS + Python + Bash em uma só passada; requer Node.js como as demais ferramentas TS)

Integração no check-all

  • Detectar arquivos .ts / .tsx
  • Chamar ferramentas via node_modules/.bin/ do projeto alvo (skip silencioso se ausente)
  • Redirecionar cache do eslint para /tmp/dev-quality/eslint via --cache --cache-location — mesmo padrão adotado para ruff e mypy
  • Flag --no-cache do check-all deve desabilitar cache também nas ferramentas TS (tsc, prettier e knip não criam cache dirs por padrão — apenas eslint precisa de tratamento)
  • Quando TypeScript estiver ativo, substituir check-duplicate (pylint R0801, Python-only) por jscpd para cobertura cross-language

Documentação

  • stacks/typescript/README.md com instruções de setup manual
  • Atualizar README principal com stack TypeScript
  • Atualizar tabela de stacks (status: planned → in progress)
  • skill/typescript.md com regras específicas do stack

Decisão de arquitetura

Ferramentas Node não podem ser empacotadas via pip/uvx. Abordagem adotada:

  • check-all chama ./node_modules/.bin/eslint etc. (requer deps instaladas no projeto alvo)
  • jscpd escolhido sobre pylint R0801 para duplicate detection no stack TS: R0801 é Python-only e não pode ser instalado via pip junto com Node tools; jscpd cobre Python + Bash + TS em uma passada, faz sentido quando Node.js já é dado pelo stack TS

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions