Communitygithub.com

hesprs/synthkernel

🧩 Uma arquitetura type-safe e composável para desenvolvimento de módulos monolíticos em TypeScript.

O que é synthkernel?

O SynthKernel é uma arquitetura de software em TypeScript que promove a escrita de código modular, limpo e eficiente. Ele é composto por uma classe carregadora de módulos e classes de módulos que estendem `BaseModule`. O carregador gerencia o ciclo de vida dos módulos, orquestra tipos via genéricos e atua como uma fachada para a lógica da aplicação. Os módulos se comunicam através de injeção de dependência, permitindo compor um sistema a partir de módulos independentes, que podem ser aninhados (um carregador pode ser módulo de outro). A arquitetura é aplicável a diversos cenários, como serviços backend, automação complexa, aplicações CLI e motores de renderização. É especialmente útil no início do desenvolvimento, quando não há uma convenção clara de arquitetura, ou em refatorações para dividir módulos grandes e tornar o projeto mais modular. Não é recomendada para projetos muito pequenos (menos de 200 linhas de código) ou para desenvolvimento de interfaces web que já possuem suas próprias convenções.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add hesprs/synthkernel

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Sobre o SynthKernel

SynthKernel é uma arquitetura TypeScript que ajuda você a escrever código eficiente, limpo e modular.

A prática típica do SynthKernel consiste em uma classe carregadora de módulos e classes de módulos:

  • A classe carregadora de módulos gerencia ciclos de vida dos módulos, orquestra tipos e atua como uma fachada na superfície da lógica da sua aplicação.
  • Todas as classes de módulo estendem uma classe BaseModule, definem APIs, executam a lógica real, aumentam a classe carregadora e se conectam via injeção de dependência.
  • Os tipos são resolvidos por meio de orquestração de genéricos.
  • Os módulos são compostos ao carregador para formar um APP. Um carregador de módulos também pode ser um módulo de um carregador pai.
  • É aplicável a quase todos os casos de uso, incluindo, mas não se limitando a: serviço backend, automação complexa, aplicação CLI e motor de renderização canvas.

Convenções do Sistema de Arquivos

O SynthKernel deve ser estruturado em um padrão de árvore.

Um carregador, juntamente com o módulo base e todos os seus módulos diretos, devem ser colocados de forma plana em uma única pasta:

  • o arquivo que acomoda o carregador deve ser nomeado index.ts
  • o módulo base nomeado BaseModule.ts
  • tipos nomeados types.ts
  • todos os módulos são nomeados (nome do módulo em PascalCase).ts
  • sem restrição para o nome de outros arquivos

É uma prática padrão transformar um módulo muito inchado em uma nova estrutura carregador-módulo, e então simplesmente transformar o módulo em uma pasta com os mesmos requisitos acima.

Quando Usar

  • No estágio inicial do desenvolvimento, quando você tem pistas da lógica mas ainda não escreveu nenhum código.
  • Você não tem uma convenção de arquitetura clara.
  • Durante refatorações quando você pretende dividir alguns módulos grandes ou tornar o projeto modular.
  • Você está adicionando novas funcionalidades e considerando criar um novo módulo, querendo entender o SynthKernel.

Quando Não Usar

  • Você não deve criar ou alterar a arquitetura.
  • Você está desenvolvendo interface web que tem suas próprias convenções.
  • Você está servindo um projeto simples (loc < 200) onde um monolito clássico é mais conveniente.

Ações

  • Se você está implementando SynthKernel do zero ou refatorando código existente para adotar SynthKernel, vá para início.
  • Se você está adicionando um novo módulo ou dividindo módulos, vá para manutenção.
  • Você pode encontrar um exemplo de prática padrão em ./exemplo.

Habilidades Relacionadas