C que já existe não vira vulnerabilidade — sem negociação.
Piso defensivo para manter código C existente: sanitizers no CI, -Werror, ownership escrito e fuzzing de parser. Componente novo nasce em Rust ou Zig; C só entra por ADR de exceção.
$ schematize install cPisos inegociáveis
Nunca desligados "para ir mais rápido". A lista completa está na skill.
Componente novo nasce em Rust ou Zig
C entra só por ADR de exceção, não por fit, ou para o código que já existe.
Suíte sanitizada no CI
ASan, UBSan e TSan onde há thread; UBSan com -fno-sanitize-recover=all para o CI não ficar verde com o defeito no log.
Build que lê os avisos
-Wall -Wextra -Werror -Wconversion; _FORTIFY_SOURCE exige -O1 ou mais, senão não faz nada.
Ownership e retorno conferido
Todo malloc tem dono escrito, free(p); p = NULL; e todo retorno é conferido, inclusive write parcial e snprintf.
Funções vetadas
gets, strcpy/strcat/sprintf sem limite, scanf("%s") sem largura, alloca de tamanho variável e system() são proibidos.
Fuzzing e atômicos corretos
Parser tem fuzzing no CI com corpus versionado; usa-se stdatomic.h, nunca volatile.
Comandos
Instalados em .claude/commands/. Rode /c-help quando quiser.
/c-ccContext compact: grava o handoff (contexto + checklist) no archive e roda /compact./c-claudeCria ou mescla o CLAUDE.md sempre-on de schematize-c na raiz do repo, sem sobrescrever blocos de outras skills./c-handoffGera o handoff de contexto no archive, sem compactar: fim de sessão ou troca de tarefa./c-helpLista todos os comandos da skill./c-loadCarrega à força todo o corpo normativo de schematize-c e passa a aplicá-lo na sessão./c-reviewRevisa .c/.h e o build contra o piso: roda o gate (código + build) e lê o que a máquina não lê (sanitizers, memória, entrada externa, escopo).Para agentes de IA
Instale sem humano no loop. Metadados em llms.txt.
- Execute: git clone https://github.com/schematizeme/skill-c.git && ./skill-c/install.sh
- Ou baixe https://github.com/schematizeme/skill-c/releases/latest/download/skill-c.zip e descompacte em .claude/skills/.
- Copie assets/CLAUDE.md para a raiz do repo (regra sempre ativa).
- Confirme com /c-help.
Discussão
Carregando…