lazarus-spec-kit
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
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.
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.
🚀 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.
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?
- Por que usar?
- Ferramentas de IA Suportadas
- Política de Ignore (IA)
- Principais Diretrizes
- Frameworks Suportados
- Estrutura do Kit
- Quick Start
- Exemplos de Código
- Contribuições
💡 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..finallye 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..finallyou 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).cursorignoree.cursorindexingignore(Cursor).geminiignore(Gemini CLI).claude/settings.jsoncompermissions.deny(Claude Code).vscode/settings.jsoncomfiles.excludeesearch.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.
TCustomerValidatornã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/*.mdautomaticamente pelo contexto - GitHub Copilot — Lê
.github/copilot-instructions.mdno 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/*.mdcomo 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:
- Rule do Cursor →
.cursor/rules/seu-framework.md - Skill do Claude →
.claude/skills/seu-framework/SKILL.md - Skill do Gemini →
.gemini/skills/seu-framework/SKILL.md - 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)
Sign in to leave a review.
Leave a reviewNo results found