lazarus-spec-kit

skill
Security Audit
Warn
Health Warn
  • No license — Repository has no license file
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 6 GitHub stars
Code Pass
  • Code scan — Scanned 2 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested
Purpose
This project is a collection of opinionated rules, instructions, and behavior guidelines designed to teach AI coding assistants how to write clean, secure, and properly architected FreePascal and Lazarus code. It acts as a configuration kit rather than a traditional executable framework.

Security Assessment
The overall risk is rated as Low. This kit consists primarily of text rules, configuration files, and prompt steerings to guide AI tools. A code scan of the project files revealed no dangerous patterns, no hardcoded secrets, and no dangerous permissions requested. Because it is designed to shape AI behavior rather than function as standalone software, it does not inherently execute shell commands, make external network requests, or access sensitive data itself.

Quality Assessment
The project is actively maintained, with its last push occurring today. However, it currently has low community visibility with only 6 GitHub stars, indicating minimal widespread peer review. The automated scan flagged a missing license file in the repository, though the README claims it is distributed under the MIT license. Developers relying on this for production should verify the actual repository license files to confirm usage rights.

Verdict
Safe to use, but verify the licensing terms in the repository before adopting.
SUMMARY

Um ecossistema opinativo de regras, skills e steerings para elevar o desenvolvimento FreePascal e Lazarus ao patamar state-of-the-art com Inteligência Artificial.

README.md

🚀 FreePascal Lazarus AI Spec-Kit

Um ecossistema opinativo de regras, skills e steerings para elevar o desenvolvimento FreePascal e Lazarus ao patamar state-of-the-art com Inteligência Artificial.

License: MIT
Lazarus
GitHub Copilot
Cursor
Claude
Gemini
Kiro

Patrocínio

Componentes Delphi/Lazarus
<www.inovefast.com.br>

Integrações com plataformas de pagamento e serviços (Asaas, MercadoPago, Cielo, PagSeguro, D4sign, Webstore, MelhorEnvio, Groq )

i9DBTools
<www.inovefast.com.br/i9dbTools/>
Gerencie MySQL, PostgreSQL, Firebird e SQLite em um só lugar, com IA para gerar e explicar SQL em linguagem natural, otimizar queries e criar dados fake brasileiros em segundos.

📋 Índice


💡 O que é este projeto?

O FreePascal Lazarus AI Spec-Kit não é um framework de código — é um conjunto de diretrizes de comportamento para sua IA favorita. Ele "ensina" o assistente a escrever código FreePascal:

  • Limpo — sem god classes, sem lógica de negócio em OnClick
  • Seguro — zero memory leaks com formatação explícita em blocos try..finally e ARC nativo via Interfaces
  • Testável — TDD com FPCUnit / DUnit, Fakes via interface, sem banco real nos testes
  • Arquitetado — SOLID, DDD, Repository/Service Pattern e clean architecture

Diga adeus à IA que mistura acesso a banco com a camada de apresentação, esquece o try..finally ou ignora Injeção de Dependência.


🤔 Por que usar?

Sem o Spec-Kit Com o Spec-Kit
IA gera código com lógica no OnClick IA isola camadas corretamente
TStringList.Create sem try..finally Padrão ouro de memória aplicado sempre
Testes acoplados ao banco real Fakes via interface, testes rápidos e isolados
Nomenclatura inconsistente A-params, F-fields, T-types, verbos nos métodos
with statement e variáveis globais Code smells bloqueados proativamente

🤖 Ferramentas de IA Suportadas

Ferramenta Arquivo de Configuração Como Funciona
GitHub Copilot .github/copilot-instructions.md Pre-prompt injetado no Workspace/Chat
Cursor .cursor/rules/*.md Rules carregadas por contexto
Claude .claude/skills/*/SKILL.md Skills modulares, prontas para empacotar e subir no Claude
Google Gemini / Antigravity .gemini/skills/*/SKILL.md Skills modulares por domínio
Kiro AI .kiro/steering/*.md Restrições de stack e arquitetura
Qualquer IA AGENTS.md Regras universais (raiz do projeto)

Padrão adotado para skills: provedores baseados em skills usam a mesma convenção de diretório no projeto: .provider/skills/<skill-slug>/SKILL.md. No caso do Claude, cada pasta em .claude/skills/ pode ser empacotada individualmente para upload.


🧹 Política de Ignore (IA)

O projeto aplica uma política explícita de redução de contexto para melhorar segurança, performance e precisão das respostas dos agentes.

Escopo atual excluído do contexto padrão de IA:

  • doc/
  • examples/

Configurações usadas no repositório:

  • .gitignore (base comum)
  • .cursorignore e .cursorindexingignore (Cursor)
  • .geminiignore (Gemini CLI)
  • .claude/settings.json com permissions.deny (Claude Code)
  • .vscode/settings.json com files.exclude e search.exclude (VS Code/Copilot Chat)

Documentação completa e rationale:

  • doc/tutorial-usando-ia-com-spec-kit.md (seção: 1.1 Política de Ignore (Segurança e Performance))

🌟 Principais Diretrizes Ensinadas à IA

🧠 Memory Management Zero-Leak

A IA obriga o padrão: todo .Create sem Owner exige try..finally na linha imediatamente subsequente. Também ensina o uso de Interfaces (ARC) para Garbage Collection nativa — sem Free manual.

// ✅ Padrão Ouro — gerado SEMPRE pela IA com o Spec-Kit
var LList: TStringList;
begin
  LList := TStringList.Create;
  try
    LList.Add('item');
  finally
    LList.Free;
  end;
end;

🧪 TDD com FPCUnit

Fluxo Red-Green-Refactor com Fakes isolados por interface. Sem acoplamento ao banco de dados nos testes.

[Test]
procedure ProcessOrder_WithoutStock_RaisesException;
begin
  AssertException(
    EInvalidOrderException,
    procedure begin FSut.Process(FEmptyOrder); end
  );
end;

🏛️ SOLID e DDD

  • S — Uma classe, uma responsabilidade. TCustomerValidator não salva no banco.
  • O — Extensão via interfaces, sem modificar código existente.
  • L — Herança só com contrato claro. Interfaces preferidas.
  • I — Interfaces pequenas e específicas. Evite interfaces gigantes.
  • D — Injeção de dependência no construtor, nunca instâncias concretas hardcoded.
// ✅ DIP na prática
constructor TOrderService.Create(
  ARepo: IOrderRepository;
  ANotifier: INotificationService);
begin
  inherited Create;
  FRepo := ARepo;
  FNotifier := ANotifier;
end;

📖 Clean Code — Pascal Guide

Nomenclaturas consistentes e obrigatórias:

Categoria Convenção Exemplo
Parâmetros Prefixo A ACustomerName
Campos privados Prefixo F FCustomerName
Variáveis locais Prefixo L LCustomer
Classes Prefixo T TCustomerService
Interfaces Prefixo I ICustomerRepository
Exceções Prefixo E ECustomerNotFound

🛠️ Frameworks e Bibliotecas Suportados

Framework Domínio Regras Incluídas
IntraWeb Web Stateful TIWAppForm, UserSession isolation, Memory Management
Horse REST APIs Minimalistas Estrutura Controller/Service/Repository, middleware
ACBr Automação Comercial (NFe, CF-e, Boleto) Isolamento fiscal, sem cruzar com UI (LCL)
Firebird Database Banco de Dados Corporativo Conexão SQLdb/Zeos, PSQL, generators, transactions
PostgreSQL Database Banco de Dados Moderno Conexão SQLdb/Zeos, UPSERT, JSONB, Full-Text Search, PL/pgSQL
MySQL / MariaDB Banco de Dados Popular Conexão SQLdb/Zeos, AUTO_INCREMENT, UPSERT, JSON, FULLTEXT
FPCUnit / DUnit Testes Unitários Red-Green-Refactor, Fakes via interface
Design Patterns GoF Padrões de Projeto Creational, Structural e Behavioral com interfaces e ARC
Threading Multi-Threading TThread, Thread-safety LCL
Refatoração de Código Code Smells e Técnicas Extract Method/Class, Guard Clauses, Strategy, Parameter Object

📂 Estrutura do Kit

lazarus-spec-kit/
│
├── AGENTS.md                        # 🌐 Regras universais (Copilot, Claude, Gemini, Kiro)
│
├── .github/
│   └── copilot-instructions.md      # 🤖 Pre-prompt para GitHub Copilot
│
├── .cursor/
│   └── rules/
│       ├── freepascal-conventions.md# Nomenclatura e convenções
│       ├── memory-exceptions.md     # Padrões de memória e exceções
│       ├── tdd-patterns.md          # TDD e FPCUnit
│       ├── solid-patterns.md        # SOLID e DDD
│       ├── design-patterns.md       # ✨ Design Patterns GoF (Creational, Structural, Behavioral)
│       ├── refactoring.md           # ✨ Refatoração de código
│       ├── intraweb-patterns.md     # IntraWeb State e UI
│       ├── horse-patterns.md        # Horse REST Framework
│       ├── acbr-patterns.md         # Automação Comercial (ACBr)
│       ├── firebird-patterns.md     # ✨ Firebird Database
│       ├── postgresql-patterns.md   # ✨ PostgreSQL Database
│       ├── mysql-patterns.md        # ✨ MySQL/MariaDB
│       └── threading-patterns.md    # ✨ Threading (TThread)
│
├── .claude/
│   ├── README.md                    # Skills do Claude e convenção de empacotamento
│   └── skills/
│       ├── clean-code/              # Clean Code e Pascal Guide
│       ├── lazarus-memory-exceptions/# Memory management e try..finally
│       ├── lazarus-patterns/        # Repository, Service, Factory
│       ├── design-patterns/         # ✨ Design Patterns GoF (23 padrões)
│       ├── refactoring/             # ✨ Refatoração (10 técnicas)
│       ├── intraweb-framework/      # IntraWeb Web Stateful
│       ├── tdd-fpcunit/             # TDD com FPCUnit
│       ├── horse-framework/         # Horse REST API
│       ├── acbr-components/         # Componentes ACBr
│       ├── test-fpcunit/            # Testes unitários com FPCUnit
│       ├── firebird-database/       # ✨ Firebird Database
│       ├── postgresql-database/     # ✨ PostgreSQL Database
│       ├── mysql-database/          # ✨ MySQL/MariaDB
│       ├── threading/               # ✨ Threading (TThread)
│       └── code-review/             # Revisão de código
│
├── .gemini/
│   └── skills/
│       ├── clean-code/              # Clean Code e Pascal Guide
│       ├── lazarus-memory-exceptions/# Memory management e try..finally
│       ├── lazarus-patterns/         # Repository, Service, Factory
│       ├── design-patterns/         # ✨ Design Patterns GoF (23 padrões)
│       ├── refactoring/             # ✨ Refatoração (10 técnicas)
│       ├── intraweb-framework/      # IntraWeb Web Stateful
│       ├── tdd-fpcunit/              # TDD com FPCUnit
│       ├── horse-framework/         # Horse REST API
│       ├── acbr-components/         # Componentes ACBr
│       ├── test-fpcunit/            # Testes unitários com FPCUnit
│       ├── firebird-database/       # ✨ Firebird Database
│       ├── postgresql-database/     # ✨ PostgreSQL Database
│       ├── mysql-database/          # ✨ MySQL/MariaDB
│       ├── threading/               # ✨ Threading (TThread)
│       └── code-review/             # Revisão de código
│
├── .kiro/
│   └── steering/
│       ├── product.md               # Visão do produto
│       ├── tech.md                  # Stack tecnológica
│       ├── structure.md             # Arquitetura de camadas
│       └── frameworks.md            # Guias de frameworks
│
└── examples/
    ├── clean-unit-example.pas        # Unit bem organizada (Golden Path)
    ├── memory-exception-example.pas  # Memória e exceções corretas
    ├── repository-pattern.pas        # Repository Pattern completo
    ├── service-pattern.pas           # Service Pattern completo
    ├── design-patterns-example.pas   # ✨ Design Patterns GoF na prática
    ├── refactoring-example.pas       # ✨ Refatoração antes/depois
    ├── tdd-fpcunit-example.pas       # TDD e FPCUnit na prática
    ├── horse-api-example.pas         # API REST com Horse
    ├── acbr-service-example.pas      # Emissão NFe com ACBr
    ├── firebird-repository-example.pas # ✨ Repository com SQLdb/Zeos + Firebird
    ├── postgresql-repository-example.pas # ✨ Repository com SQLdb/Zeos + PostgreSQL
    ├── mysql-repository-example.pas  # ✨ Repository com SQLdb/Zeos + MySQL
    └── threading-example.pas         # ✨ Threading patterns (TThread)

⚡ Quick Start

1. Clone ou baixe o kit

git clone https://github.com/delphicleancode/lazarus-spec-kit.git

2. Copie para a raiz do seu projeto Lazarus

Seu-Projeto/
├── MeuApp.lpi
├── MeuApp.lpr
├── AGENTS.md          ← copie da raiz
├── .github/           ← copie a pasta
├── .cursor/           ← copie a pasta
├── .claude/           ← copie a pasta
├── .gemini/           ← copie a pasta
└── .kiro/             ← copie a pasta

3. A IA assume as regras automaticamente

  • Cursor — Lê os .cursor/rules/*.md automaticamente pelo contexto
  • GitHub Copilot — Lê .github/copilot-instructions.md no workspace
  • Claude — Usa as skills em .claude/skills/; cada pasta pode ser zipada para upload no Claude
  • Antigravity / Gemini — Skills em .gemini/skills/ são ativadas por demanda
  • Kiro — Lê .kiro/steering/*.md como contexto fixo de produto

Nenhuma configuração adicional necessária. Abra o projeto, use sua IA preferida e observe a diferença.


💡 Exemplos de Boas Práticas

Arquitetura de Camadas

src/
├── Domain/         ← Entidades, Value Objects, Interfaces de Repositório
├── Application/    ← Services, Use Cases, DTOs
├── Infrastructure/ ← Repositórios SQLdb/Zeos, APIs externas
└── Presentation/   ← Forms LCL, ViewModels
tests/
└── Unit/           ← Projetos FPCUnit com Fakes isolados

Regra de dependência: Presentation → Application → Domain ← Infrastructure
O Domain nunca depende de outras camadas.

Guard Clauses (sem nesting desnecessário)

procedure ProcessOrder(AOrder: TOrder);
begin
  if not Assigned(AOrder) then
    raise Exception.Create('AOrder não pode ser nil');
  if AOrder.Items.Count = 0 then
    raise Exception.Create('Pedido precisa ter ao menos um item');
  if not AOrder.IsValid then
    raise Exception.Create('Validação do pedido falhou');

  // lógica real aqui, sem nesting
  FRepository.Save(AOrder);
  FNotifier.Send(AOrder.Customer.Email);
end;

Teste com Fake via Interface

type
  TFakeOrderRepository = class(TInterfacedObject, IOrderRepository)
  private
    FOrders: TObjectList;
  public
    constructor Create;
    destructor Destroy; override;
    procedure Save(AOrder: TOrder);
    function FindById(AId: Integer): TOrder;
  end;

  TOrderServiceTest = class(TTestCase)
  private
    FSut: TOrderService;
    FRepo: IOrderRepository;
  protected
    procedure SetUp; override;
    procedure TearDown; override;
  published
    procedure TestPlaceOrder_ValidOrder_SavesToRepository;
    procedure TestPlaceOrder_EmptyItems_RaisesException;
  end;

🤝 Contribuições

Pull Requests são bem-vindos! Se seu framework ou biblioteca Lazarus/FreePascal favorita precisa de um guia para a IA, adicione:

  1. Rule do Cursor.cursor/rules/seu-framework.md
  2. Skill do Claude.claude/skills/seu-framework/SKILL.md
  3. Skill do Gemini.gemini/skills/seu-framework/SKILL.md
  4. Referência → mencione no AGENTS.md

Como contribuir

# Fork e clone
git fork https://github.com/delphicleancode/lazarus-spec-kit
git clone https://github.com/SEU-FORK/lazarus-spec-kit

# Crie uma branch descritiva
git checkout -b feat/add-zeos-patterns

# Commit e Pull Request
git commit -m "feat: add ZeosLib patterns"
git push origin feat/add-zeos-patterns

Deixe um cafézinho para o autor pix: [email protected]

Feito com ❤️ para a comunidade Lazarus/FreePascal.

Se este kit te ajudou, deixe uma ⭐ no repositório!

Reviews (0)

No results found