c2f-hooks-system
Skill5 starsChanged 2 months agoMITView on GitHub
LEIA ANTES de criar, interceptar ou disparar ações (Actions) e filtros (Filters) de extensibilidade. Se não ler: hooks não disparam por registro ausente em hooks.json, parâmetros são perdidos ou causam efeitos colaterais silenciosos.
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 100
Desativação Temporária: Use "habilitado": 0 no JSON para desativar um hook sem remover o registro.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Sistema de Hooks do Conn2Flow (gestor/bibliotecas/hooks.php)
⚡ Gatilho Obrigatório
- TRIGGER: Criar ou consumir pontos de extensão via
hook_do_action()ouhook_apply_filters(), ou registrar manipuladores emhooks.json/project/hooks/. - SKIP APENAS SE: Código interno fechado de um módulo sem necessidade de interoperabilidade com outros módulos ou plugins.
- CONSEQUÊNCIA DE IGNORAR: Filtros ignorados silenciosamente por falta de registro em
hooks.json, corrupção do retorno de filtros ou acoplamento monolítico indevido.
Consulte e aplique as seguintes convenções ao trabalhar com o sistema de Actions e Filters no Conn2Flow:
1. Conceito Central: Actions vs. Filters
- Actions (
hook_do_action): Usado para efeitos colaterais (logs, notificações, widgets). Não possui retorno.hook_do_action('admin-paginas', 'adicionar.banco', $id, $dados); - Filters (
hook_apply_filters): Usado para transformação de dados. Retorna o valor modificado.$titulo = hook_apply_filters('admin-paginas', 'titulo.salvar', $titulo_bruto); - Verificações Prévias:
hook_has_actions('namespace', 'evento')ehook_has_filters('namespace', 'evento').
2. Eventos Nativos de Interface (interface.php)
A plataforma dispara hooks automáticos para os módulos que usam o sistema padrão de interface:
adicionar.pre-banco,adicionar.banco($id,$dados),adicionar.parametros,adicionar.pagina.editar.pre-banco,editar.banco($id,$dados),editar.parametros,editar.pagina.excluir.banco($id),status.banco($id,$novoStatus),clonar.banco($id,$dados).
3. Registro de Hooks via JSON (Fonte Única da Verdade)
Nunca insira diretamente na tabela hooks — a tabela é sobrescrita pela sincronização atualizacoes_hooks_sincronizar().
A. Em Módulos (modulos/<modulo>/<modulo>.json):
{
"hooks": {
"controllers": {
"admin-paginas": "meu-modulo.hooks.php"
},
"actions": {
"admin-paginas": {
"adicionar.banco": {
"callback": "meu_modulo_page_added_hook",
"prioridade": 5,
"habilitado": 1
}
}
},
"filters": {}
}
}B. No Projeto (project/hooks/hooks.json):
{
"controllers": {
"admin-paginas": "admin-paginas.hooks.php"
},
"actions": {
"admin-paginas": {
"adicionar.pagina": "projeto_page_added_hook"
}
},
"filters": {}
}4. Estrutura dos Controladores PHP (Callbacks)
- No Projeto:
project/hooks/controllers/<namespace>.hooks.php. - Nos Módulos:
modulos/<modulo>/<modulo>.hooks.php.
Exemplo de callback:
function meu_modulo_page_added_hook(string $id, array $dados = []): void {
global $_GESTOR;
// Lógica do hook sem alterar o módulo emissor
}5. Boas Práticas
- Sincronização Idempotente: Execute
atualizacoes_hooks_sincronizar()(ou via tarefas de deploy) para aplicar alterações de JSON no banco. - Desativação Temporária: Use
"habilitado": 0no JSON para desativar um hook sem remover o registro. - Wildcard
*: Use*no namespace para registrar ouvintes globais em qualquer módulo.
6. Sincronização de Hooks no Deploy e Comando Dedicado
6.1 Sincronização Automática no Pipeline de Deploy
- A tabela
hooksdo banco de dados é sincronizada automaticamente durante a etapa de banco de dados (atualizacoes-banco-de-dados.php) executada por:./c2f project:update-all <projeto-id>(pipeline completo de um projeto)./c2f manager:update-all(pipeline completo de todos os projetos)
- A função
atualizacoes_hooks_sincronizar()é chamada internamente, lendo todos oshooks.jsonde módulos e do projeto, e recriando a tabelahookscom os registros atualizados. - Idempotência Garantida: A sincronização é idempotente — executar múltiplas vezes produz o mesmo resultado. A tabela é reconstruída a partir dos JSONs, que são a fonte da verdade.
6.2 Comando Dedicado c2f project:sync-hooks <projeto-id>
- Para atualizar hooks sem executar o pipeline completo (sem migrações, sem CSS rebuild, sem resources:sync), use:
./c2f project:sync-hooks <projeto-id>- Este comando foi implementado na REQ-174/BATCH-179 especificamente para permitir atualizações isoladas de hooks durante desenvolvimento.
- Caso de Uso Principal: Após editar um
hooks.jsonde módulo ou do projeto, rodar apenasproject:sync-hookspara refletir as mudanças no banco sem o overhead do pipeline completo. - Verificação Rápida: Após a sincronização, confirme no banco:
SELECT * FROM hooks WHERE namespace = 'meu-modulo' ORDER BY prioridade;[!IMPORTANT] Nunca insira ou atualize registros diretamente na tabela
hooksvia SQL. A tabela é sobrescrita integralmente a cada sincronização. Alterações manuais serão perdidas no próximo deploy.
In this repository102 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- cli/CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- .cursor/rules/sdd.mdcCursor rule
- c2f-database-testingSkill
- c2f-gd-image-safetySkill
- c2f-json-resources-syncSkill
- c2f-mdd-indexing-and-handoffsSkill
- c2f-mysql-utf8-emoji-encodingSkill
- c2f-tailwind-css-architectureSkill
- c2f-tailwind-module-migrationSkill
- c2f-widget-developmentSkill
- c2f-agent-visual-inspectionSkill
- c2f-ai-featuresSkill
- c2f-architect-masterSkill
- c2f-database-operationsSkill
- c2f-database-testingSkill
- c2f-dev-scriptsSkill
- c2f-docker-environmentSkill
- c2f-documentation-governanceSkill
- c2f-documentationSkill
- c2f-environment-configurationSkill
- c2f-executor-agentSkill
- c2f-gd-image-safetySkill
- c2f-gestor-functionsSkill
- c2f-global-variablesSkill
- c2f-html-css-pages-and-componentsSkill
- c2f-interface-v2-architectureSkill
- c2f-javascript-ajaxSkill
- c2f-json-resources-syncSkill
- c2f-mdd-indexing-and-handoffsSkill
- c2f-modelo-templatesSkill
- c2f-module-crud-scaffoldingSkill
- c2f-module-visual-assetsSkill
- c2f-multilingual-systemSkill
- c2f-mysql-utf8-emoji-encodingSkill
- c2f-payment-gatewaysSkill
- c2f-plugin-architectureSkill
- c2f-preview-modals-systemSkill
- c2f-project-pipeline-and-tasksSkill
- c2f-projects-systemSkill
- c2f-resources-systemSkill
- c2f-reviewer-agentSkill
- c2f-shell-and-windows-trapsSkill
- c2f-system-tasksSkill
- c2f-tailwind-css-architectureSkill
- c2f-tailwind-module-migrationSkill
- c2f-variables-systemSkill
- c2f-widget-developmentSkill
- continue-mdd-batchSkill
- mdd-memory-gardeningSkill
- mdd-workflowSkill
- project-validationSkill
- raise-spec-changeSkill
- review-current-batchSkill
- start-mdd-sliceSkill
- c2f-agent-visual-inspectionSkill
- c2f-ai-featuresSkill
- c2f-architect-masterSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

