name: xpz-index-triage description: Usa índice derivado da KB para triagem inicial e orienta o chamador a abrir apenas os XMLs oficiais realmente necessários
xpz-index-triage
Usa um índice derivado da KB GeneXus como etapa inicial de descoberta e triagem. Ajuda o agente chamador a encontrar rapidamente por onde começar, reduzindo abertura ampla do acervo XML oficial e preservando ObjetosDaKbEmXml como fonte normativa final.
GUIDELINE
Usar o índice derivado da KB como trilha inicial de triagem antes de expandir a leitura do acervo XML oficial. A skill executa a consulta inicial no índice e orienta o chamador a reduzir a abertura de XML ao conjunto mínimo necessário.
O índice é artefato derivado. Ele não substitui os XMLs oficiais e não autoriza conclusão funcional automática.
Em fluxos acionados por botão, link, action ou event, nome plausível de WebPanel ou popup não é evidência suficiente de que ele é o alvo executado pelo fluxo real. O caller deve ser resolvido antes de qualquer leitura ou edição do objeto-alvo.
Antes de usar o índice como base de triagem, executar obrigatoriamente o gate via Test-*KbIndexGate.ps1. O gate verifica em sequência: estrutura da pasta paralela via Test-*KbStructure.ps1, existência da pasta KbIntelligence, do SQLite, semântica de inventário e frescor via index-metadata, existência de kb-source-metadata.md e last_xpz_materialization_run_at, compara timestamps e valida extractor_signature_version/extractor_signature_hash na metadata do SQLite contra o motor compartilhado (scripts/GeneXusKbIntelligenceExtractorContract.ps1 + scripts/Build-KbIntelligenceIndex.py no repositório ativo). Não fazer verificação manual de frescor, semântica, assinatura do extrator ou estrutura — todas as verificações são encapsuladas no gate script, que é o único ponto de execução autorizado. Se Test-*KbIndexGate.ps1 não existir em scripts/, tratar isso como bloqueio estrutural equivalente a BLOCK: do próprio script — encerrar a pergunta de negócio e oferecer atualização via xpz-kb-parallel-setup; não compensar com verificação manual, consulta direta ao índice ou qualquer outra alternativa.
- se o gate retornar
GATE_OK, o índice está apto para triagem inicial - se o gate retornar
BLOCK: <motivo>, tratar o índice como defasado/incompatível
O gate é obrigatório inclusive para perguntas simples de existência — um índice defasado pode retornar falso negativo ou falso positivo mesmo para search-objects; a simplicidade da pergunta não elimina o risco de resposta errada.
Índice defasado, last_xpz_materialization_run_at ausente ou wrapper local sem suporte a index-metadata é gate de bloqueio para pesquisa ampla, triagem substantiva, consulta substantiva ao acervo oficial de objetos, leitura de XML de objeto e geração de objetos de importação. Esse estado deve ser tratado como exceção operacional, normalmente sinal de pasta paralela ainda sem wrappers XPZ atualizados ou de falha fortuita. O agente deve oferecer ao usuário atualização via xpz-kb-parallel-setup antes de seguir. Nesse estado, o agente pode executar apenas diagnóstico mínimo para explicar a incompatibilidade, restrito a documentação local, estrutura, wrappers e metadados operacionais; não deve compensar com leitura manual de JSON, SQLite direto, kb-source-metadata.md isolado, datas de arquivo, updated, generated_at, source_xpz, XML oficial de objeto, caminho pontual deduzido em ObjetosDaKbEmXml ou varredura em ObjetosDaKbEmXml.
Se a pasta paralela da KB ainda não estiver montada, validada ou mapeada, parar e usar xpz-kb-parallel-setup antes de depender de caminhos locais.
O gate deve ser executado como checagens atômicas e sequenciais. A primeira etapa atômica é a verificação de estrutura via Test-*KbStructure.ps1. Cada etapa só pode consultar o artefato daquela etapa depois que a etapa anterior tiver sido aprovada. Em particular, não testar, listar ou abrir caminhos filhos como KbIntelligence\kb-intelligence.sqlite antes de confirmar que a estrutura está STRUCTURE_OK. Se a estrutura falhar, relatar apenas esse primeiro bloqueio e encerrar a pergunta de negócio. Se o wrapper local documentado estiver ausente, não procurar variantes, backups ou nomes parecidos; relatar apenas o wrapper esperado ausente e oferecer atualização via xpz-kb-parallel-setup.
Depois de index-metadata passar, validar kb-source-metadata.md em duas etapas atômicas: primeiro confirmar que o arquivo existe; somente depois procurar o campo literal last_xpz_materialization_run_at. Se o arquivo estiver ausente, bloquear por arquivo ausente sem procurar campo. Se o campo estiver ausente, bloquear por campo ausente sem inferir por outros metadados. Não intercalar Get-Date entre etapas internas do gate; timestamp operacional basta antes de updates/respostas ao usuário.
PATH RESOLUTION
- Este
SKILL.mdfica dentro de uma subpasta de skill sob a raiz do repositório. - Toda referência
../arquivo.mddeve ser resolvida a partir da pasta desteSKILL.md, e não do diretório de trabalho corrente. - Na prática,
../aponta para a base metodológica compartilhada na pasta-pai desta skill.
TRIGGERS
Use esta skill para:
- pergunta sobre impacto técnico direto de um objeto
- pergunta sobre quem usa ou o que um objeto usa
- pergunta sobre evidência de relação entre objetos GeneXus
- pergunta funcional curta que precise de triagem inicial antes da leitura do XML oficial
- necessidade de decidir quais XMLs oficiais devem ser abertos primeiro
- necessidade de reduzir varredura ampla do acervo
ObjetosDaKbEmXml - identificar qual objeto é efetivamente aberto ou executado por uma ação, botão, link ou evento em tela GeneXus ("qual popup esse botão abre?", "qual objeto é chamado pelo evento X?", "o que abre ao clicar em Y?")
Do NOT use this skill for:
- leitura estrutural de XML bruto isolado sem depender do índice
- geração, clonagem ou empacotamento de XML/XPZ
- sincronização de
XPZ - documentação como objetivo principal
- manutenção, regeneração ou evolução do índice como foco principal
- conclusão funcional completa sem leitura do XML oficial quando a pergunta exigir semântica GeneXus
RESPONSIBILITIES
- Detectar se a KB ativa expõe
KbIntelligence\kb-intelligence.sqlite - Ler
README.mdeAGENTS.mdlocais do repositório alvo antes de depender do índice - Localizar, pela documentação local do repositório, o wrapper de consulta do índice no ambiente ativo
- Verificar
last_index_build_run_atcontralast_xpz_materialization_run_atantes da primeira consulta substantiva - Preferir
index-metadatano wrapper local quando disponível para ler metadados do SQLite - Se
index-metadataexistir, mas falhar, retornar vazio, não expuserlast_index_build_run_atou não expuserinventory_validation_status, tratar como índice sem metadado válido; não prosseguir com triagem substantiva antes de oferecer regeneração/validação - Se
kb-source-metadata.mdnão expuser literalmentelast_xpz_materialization_run_at, tratar como metadado de materialização incompatível; não inferir frescor por data de arquivo,updated,generated_at,source_xpzou outros campos - Se o wrapper local não aceitar
index-metadata, declarar essa defasagem precisamente como falta de exposição no wrapper local, não como falta do motor compartilhado; abortar a pergunta de negócio e oferecer atualização viaxpz-kb-parallel-setup - Traduzir a pergunta do usuário para a consulta mais útil no índice
- Escolher entre consultas como:
object-infoattribute-infosearch-objectslist-by-typetransaction-attributestransaction-writable-attributeswho-useswhat-usesshow-evidenceimpact-basicfunctional-trace-basiccss-classescss-class-usage
- Quando a pergunta ou solicitação de edição vier ancorada em fluxo de navegação ("nesta tela clico em X", "o popup aberto por Y", "o objeto chamado pelo evento Z"), executar sub-fluxo obrigatório de resolução de alvo antes de liberar leitura ou edição:
- Identificar o objeto caller citado pelo usuário
- Localizar o evento ou ação real no XML do caller (
Event,Action,Link,Window.Object,Create(...),formatLink,context.NewWindow, URL gerada) - Resolver o objeto efetivamente aberto ou executado
- Quando houver mais de um alvo plausível, declarar a ambiguidade explicitamente e confirmar o alvo com o usuário antes de prosseguir
- Produzir o bloco de handoff auditável de resolução de alvo (ver COMMUNICATION) antes de liberar leitura ou edição
Localização com índice e desambiguação de candidatos
Para localizar objeto, dependência ou ponto de leitura inicial, preferir consultas do índice (
search-objects,object-info,who-uses,what-uses, etc.) depois deGATE_OK; o índice existe para reduzir abertura ampla de XML e erro de caminho.Para análise de impacto, callers, callees e referências entre objetos, não usar
rg/grepbruto como base de conclusão quando o índice estiver apto. O fluxo obrigatório éimpact-basic/who-uses/what-usese, para uma relação específica,show-evidenceou leitura do XML oficial em bloco correto.Antes de
who-uses,what-uses,impact-basicoufunctional-trace-basic, conferir no catálogo efetivo (scripts/gx-object-type-catalog.json+ override local) se o tipo temqueryableByKbIntelligence=true; quando forfalse, o query devolve exit11eblocked=true— não tratar como “zero dependências”; usarobject-info,search-objects,list-by-typeou XML pontual (lista no JSON).Tipos com
queryableByKbIntelligence=truee grafo assimétrico (API,DataSelector,WorkWithForWeb,ExternalObject): verscripts/README-kb-intelligence.md—impact-basiccom só saídas ou entradas esparsas pode ser resposta válida.Em
ExternalObject, distinguir referência declarativa porATTCUSTOMTYPEde uso efetivo por chamada de método em variávelexo:<ExternalObject>; quando a pergunta for "quem toca/usa este objeto externo", preferirwho-usese conferirextractor_rule/show-evidenceantes de concluir o tipo de uso.O índice não substitui leitura de XML quando a pergunta depender de conteúdo não representado no índice (trecho literal de
Source/Rules, mensagem de erro exata, semântica GeneXus no XML). Nesses casos, após a consulta mínima ao índice quando ela ainda ajudar, pode-se usar busca textual pontual no acervo oficial — somente comGATE_OKe sem varredura ampla desnecessária.Para busca textual pontual em XML de
WebPanel, evitarrg/grepbruto quando a pergunta for sobre evento, chamada, validação, filtro ou fluxo; primeiro usarscripts\Search-GeneXusXmlSourceBlock.ps1 -Block eventsou extração estruturada equivalente para não confundir match emGxMultiFormde layout com code-behind.Quando o agente já souber nome e caminho nominal do XML oficial e a tarefa for apenas ler ou editar esse arquivo, não é obrigatório repetir
search-objects; ainda assim, se a busca textual por trecho literal retornar mais de um arquivo, aplicar desambiguação antes de abrir um único XML.Quando o índice ou a busca textual pontual retornar mais de um candidato plausível, listar todos, cruzar com pistas do usuário (action, botão, evento, Procedure/WebPanel citados, tokens no nome do arquivo, fluxo declarado), declarar recomendação explícita com motivo e confirmar com o usuário antes de abrir XML ou responder como se o alvo estivesse fechado.
Executar a triagem inicial apropriada
Não executar consulta substantiva do índice antes de
GATE_OK;search-objects,list-by-type,object-info,attribute-info,transaction-attributes,transaction-writable-attributes,who-uses,what-uses,show-evidence,impact-basic,functional-trace-basic,css-classesecss-class-usagesó podem rodar depois que o gate terminar liberadoDepois de
GATE_OK, ir direto para a consulta substantiva mínima necessária; não abrirscripts/README-kb-intelligence.md, não listarscriptse não reinspecionar o wrapper local se a pergunta já puder ser atendida com consulta simples comosearch-objects,object-info,attribute-info,transaction-attributesoutransaction-writable-attributesEm pergunta simples de existência/localização nominal, listagem por tipo ou consulta pontual de atributo (
attribute-info) ou gravabilidade materializada (transaction-attributes,transaction-writable-attributes), considerar a própria skill suficiente para escolher a consulta mínima; usar os parâmetros documentados em QUERY PARAMETER REFERENCE; não abrir o wrapper só para "confirmar assinatura" antes de chamarsearch-objects,list-by-type,object-info,attribute-info,transaction-attributesoutransaction-writable-attributesDevolver leitura técnica curta, auditável e limitada ao recorte do índice
Orientar o chamador a reduzir a abertura de XML ao conjunto mínimo necessário
Indicar quais XMLs oficiais devem ser lidos depois, quando a triagem não bastar sozinha
Preservar a distinção entre índice derivado e fonte normativa em
ObjetosDaKbEmXmlQuando a pergunta for funcional curta, manter a separação entre:
Evidência diretaLeitura adicional do XMLInferência forteHipótese
Explicitar o limite metodológico quando a triagem não cobrir a semântica necessária
Reconhecer quando a KB local ainda não expõe wrapper compatível com a capacidade desejada e tratar isso como adaptação local pendente, não como falha metodológica do índice
Quando a busca no índice for motivada por warning de GeneXus sobre provider ausente, item desconhecido, designer ou metadado de extensão: classificar o item citado antes de interpretar o resultado — (a) objeto GeneXus exportável comum; (b) metadado interno ou part; (c) designer/provider de extensão; (d) tipo desconhecido. Resultado negativo do índice para item tipo (b), (c) ou (d) deve ser reportado como conclusão limitada: "não encontrado no índice derivado nem no XPZ/XML" — nunca "não existe na KB". Consultar regra conceitual em
02-regras-operacionais-e-runtime.mdseção "Limite do XPZ/XML frente a providers e extensões GeneXus".
COMMUNICATION
- Responder no mesmo idioma do usuário
- Obter horário local imediatamente antes de cada update ou resposta ao usuário; não reutilizar timestamp anterior nem inferir horário pela sequência da conversa
- Começar pelo resultado da triagem, não pelo histórico do índice
- Quando o gate de frescor/compatibilidade tiver sido relevante no fluxo, declarar brevemente a decisão do gate na resposta ou no handoff:
- se liberado, informar que
last_index_build_run_at >= last_xpz_materialization_run_ateinventory_validation_status=OK - se bloqueado, informar qual campo/capacidade faltou ou qual timestamp ficou defasado
- se liberado, informar que
- Quando o gate bloquear depois de
index-metadata, não dizer que "não devo consultar o índice"; dizer que a consulta de metadados do gate foi feita, mas a triagem substantiva pelo índice está bloqueada - Dizer explicitamente quando a resposta ainda depende de leitura do XML oficial
- Quando o gate estiver bloqueado, dizer explicitamente que não será aberto XML oficial de objeto nem feita varredura em
ObjetosDaKbEmXmlpara responder a pergunta de negócio - Quando o comando do gate for negado, cancelado ou interrompido pelo usuário, dizer explicitamente que (a) nenhuma busca alternativa será feita até o gate ser liberado e (b) o caminho operacional é revisar a regra de permissão em
settings.jsone/ou rodarxpz-kb-parallel-setup; não prometer "tentar de outro jeito" - Abrir XML oficial de objeto somente depois de o gate ter sido liberado; com gate bloqueado, não usar leitura pontual de XML para responder pergunta de negócio
- Quando o índice devolver caminho nominal do XML oficial, manter esse caminho completo e consistente na resposta; não encurtar depois para apenas o nome do arquivo
- Separar o que veio do índice do que é inferência do agente
- Em pergunta funcional, manter a classificação:
Evidência diretaLeitura adicional do XMLInferência forteHipótese
- Quando o sub-fluxo de resolução de alvo tiver sido executado, produzir bloco de handoff auditável antes de liberar leitura ou edição:
Caller confirmado: <nome do objeto caller> Evento/Ação: <nome do evento ou ação no caller> Alvo resolvido: <nome do objeto efetivamente aberto/executado> Evidência: <trecho do XML do caller que aponta para o alvo> - Não prometer impacto runtime completo
- Não prometer conclusão funcional fechada quando o índice apenas apontar trilha de leitura
STRUCTURE
Reference files and when to load them:
| Reference | Load when |
|---|---|
| 02-regras-operacionais-e-runtime.md | Depois do gate estrutural inicial, quando for necessário interpretar frescor, metadados, limite operacional ou relação entre artefato derivado e fonte normativa |
| 08-guia-para-agente-gpt.md | Depois do gate estrutural inicial, quando for necessário orientar uso do KB Intelligence, escalada para XML oficial ou decisão operacional |
| kb-intelligence-guia-metodologico-agente.md | Quando a resposta precisar de roteiro de investigação funcional, modelo de resposta (evidência / leitura adicional / inferência / hipótese), functional-trace-basic como trilha narrativa, ou terminologia via edição web / via BC — não para escolher consulta do índice (search-objects, attribute-info, etc.); isso fica na skill e em QUERY PARAMETER REFERENCE |
| scripts/README-kb-intelligence.md | Depois do gate estrutural inicial, quando a QUERY PARAMETER REFERENCE da skill não bastar: cobertura ambígua do índice, comando não listado na skill, ou distinção entre validadores (Test-KbIntelligenceQueries vs gates de geração em xpz-builder) |
Para economizar contexto, não carregue referências longas da tabela acima antes do gate estrutural inicial (KbIntelligence, SQLite e wrapper local). Se o gate bloquear em uma dessas três checagens, responda com a primeira falha e ofereça xpz-kb-parallel-setup sem abrir referências adicionais.
Mesmo com o gate liberado, continue econômico: para pergunta simples de existência/localização nominal de objeto, use primeiro search-objects ou object-info; para sinais leves de um atributo use attribute-info; para gravabilidade transacional materializada use transaction-attributes ou transaction-writable-attributes; só abra scripts/README-kb-intelligence.md ou releia o wrapper local quando a cobertura da consulta estiver realmente ambígua.
QUERY PARAMETER REFERENCE (consultas mínimas)
Para as consultas mais frequentes, o wrapper Query-*KbIntelligence.ps1 aceita os seguintes parâmetros (além de -IndexPath e -Format, comuns a todas as consultas):
- search-objects:
-ObjectName(obrigatório, aceita substring parcial com wildcard*, ex:"*planilha*"),-ObjectType(opcional, filtra por tipo),-Limit(opcional) - list-by-type:
-ObjectType(obrigatório, tipo exato, ex:Procedure),-Limit(opcional); lista todos os objetos de um tipo sem necessidade de nome — use quando o usuário perguntar "quais são os X da KB" - object-info:
-ObjectType(obrigatório, tipo exato, ex:Procedure),-ObjectName(obrigatório, nome exato do objeto) - attribute-info:
-ObjectName(obrigatório, nome exato do atributo); retorna sinais leves comoFormulaeidBasedOnsem varrer o acervo inteiro - who-uses / what-uses em
Procedure(e alvos resolvidos emFormuladeAttribute): o índice inclui dependências viaProperty Formulaquando o padrão de chamada coincide comSourceefetivo; para semântica da expressão ou funções não indexadas, abrir o XML do atributo - transaction-writable-attributes: classificação completa materializada no índice (paridade com
Test-GeneXusTransactionWritability.ps1, que delega ao núcleo Python); use para triagem e impacto deNewem atributos;unclassified-*exige XML; blocosNewemProcedureainda passam porTest-GeneXusNewWritableTargets.ps1 - transaction-attributes / transaction-writable-attributes:
-ObjectName(obrigatório, nome exato da Transaction); lista atributos por Level com classificação materializada; para empacote com atribuições ou blocosNew, use os gates completos da skillxpz-builder - css-classes: catálogo de classes CSS (tabela
css_class, estilo-inventário; não exigequeryableByKbIntelligence).-Model(opcional:legacy-theme|design-system),-Origin(opcional:kb-authored|packaged-module),-IncludeImported(opcional, inclui libs importadas na visão sem lookup),-ObjectName(opcional, lookup nominal case-sensitive de uma classe; nunca filtra origem, para não dar falso "não existe" de classe importada),-Limit.legacy-themesai marcadodeprecated=true(candidato a migração para DesignSystem) - css-class-usage: onde uma classe é usada (relações
uses_css_class/uses_css_class_dynamic).-ObjectName(opcional: classe específica; sem ele devolve overview com totais e a lista de usadas mas não catalogadas),-Limit. Declara cobertura honesta:dynamic_uses_total= atribuições.Class=dinâmicas (variável/Format()) não atribuíveis a uma classe;found_in_catalog=false= classe usada mas não catalogada, não inexistente. Para operação destrutiva (renomear/remover classe), conferir por busca literal no XML antes de agir
A documentação completa de todas as consultas e seus parâmetros está em scripts/README-kb-intelligence.md.
GATE MÍNIMO RECOMENDADO
Chamar Test-*KbIndexGate.ps1 pelo nome provisionado na pasta scripts da pasta paralela da KB. O script encapsula toda a lógica do gate: verifica sequencialmente pasta KbIntelligence, kb-intelligence.sqlite, wrapper local de consulta, metadado de build via -Query index-metadata, kb-source-metadata.md e comparação de timestamps. Retorna GATE_OK em stdout quando o índice está apto, ou lança exceção com BLOCK: <motivo> quando não está.
Substitua <caminho-absoluto-do-script> pelo caminho absoluto literal do script lido da documentação local da pasta paralela (ex: C:\Dev\Prod\Gx_FabricaBrasil\scripts\Test-FabricaBrasilKbIndexGate.ps1). Não usar variável nem Join-Path: o caminho literal é obrigatório para que o sistema de permissões consiga validar estaticamente o comando e dispensar prompts manuais. Não acrescentar linhas, saídas auxiliares, parsing ou comandos ao bloco; toda a lógica de gate está encapsulada no script.
Executar este bloco usando o tool PowerShell (não Bash). A sintaxe & "..." é PowerShell pura; o Bash não consegue parseá-la e o sistema de permissões acaba sem padrão estável para registrar (sem opção de "Sempre permitir"). Além disso, a regra de permissão usa prefixo PowerShell(...) e não casa quando o comando entra via tool Bash.
O comentário #gate no fim do bloco é proposital: é apenas comentário PowerShell (zero efeito em execução), mas garante que o comando termine com conteúdo após o caminho. Isso permite usar o padrão de permissão PowerShell(& "<caminho-absoluto-do-script>" *) (espaço + curinga), que é o mesmo padrão dos demais scripts já registrados no settings.json. Foi observado em Claude Desktop Windows que match exato sem curinga (PowerShell(& "<caminho>")) não dispensa o prompt mesmo quando registrado, comportamento aparentemente bugado de descasamento entre matcher e registrador; o #gate evita esse caminho problemático.
& "<caminho-absoluto-do-script>" #gate
Se o script retornar GATE_OK, encerrar o comando do gate; qualquer próxima ação deve ser decidida e executada em comando separado, conforme a consulta substantiva necessária.
Se qualquer BLOCK: ocorrer, encerrar a pergunta de negócio e oferecer xpz-kb-parallel-setup. Não executar etapas posteriores do gate em comandos separados para "completar diagnóstico".
ERROS COMUNS DE CHAMADA
- executar o bloco do gate em
Bashem vez dePowerShell - trocar o caminho absoluto literal do script por variável,
Join-Pathou montagem indireta - acrescentar parsing,
Write-Host,Get-Date, saídas auxiliares ou comandos extras ao mesmo bloco do gate - tratar recusa de permissão, cancelamento ou interrupção do gate como licença para fallback manual
- depois de
GATE_OK, reinspecionar o wrapper local ou abrirscripts/README-kb-intelligence.mdsem necessidade quando a pergunta já cabe emsearch-objects,list-by-typeouobject-info - em pergunta simples de existência/localização nominal, abrir o wrapper apenas para confirmar assinatura antes de usar os parâmetros já documentados em QUERY PARAMETER REFERENCE
WORKFLOW
- Identificar o repositório ativo e reler
README.mdeAGENTS.mdlocais; ao reler oAGENTS.md, verificar se contém a seção## Triagem Por Indice— se ausente em pasta que adotaKbIntelligence, tratar como estrutura desatualizada e rotear paraxpz-kb-parallel-setupantes de qualquer triagem - Se a pasta paralela da KB ainda não estiver montada, validada ou mapeada para este repositório -> ABORT e usar
xpz-kb-parallel-setup - A PRIMEIRA ação substantiva desta skill em qualquer sessão deve ser executar o gate. Nenhuma consulta ao índice, leitura de XML, varredura de
ObjetosDaKbEmXmlou comandoQuery-*KbIntelligence.ps1pode ocorrer antes deTest-*KbIndexGate.ps1retornarGATE_OK. Isso vale inclusive para perguntas simples de existência/localização nominal, listagem por tipo ou consulta pontual de atributo/gravabilidade —search-objects,list-by-type,object-info,attribute-info,transaction-attributesetransaction-writable-attributesestão proibidos antes do gate. - Executar o gate em ordem sequencial e parar no primeiro bloqueio; não investigar camadas internas até a camada externa estar válida
- Verificar se existe
Test-*KbIndexGate.ps1emscripts\; se ausente, bloquear como defasagem da pasta paralela e oferecer atualização viaxpz-kb-parallel-setup - Executar
Test-*KbIndexGate.ps1; o script verifica sequencialmente: estrutura da pasta paralela viaTest-*KbStructure.ps1, pastaKbIntelligence,kb-intelligence.sqlite, wrapper local de consulta com-Query index-metadata,inventory_validation_status,kb-source-metadata.mde comparação de timestamps; qualquerBLOCK:encerra a pergunta de negócio- se a execução do comando do gate for negada, cancelada ou interrompida pelo usuário, tratar como gate não liberado: encerrar a pergunta de negócio, relatar a situação ao usuário, oferecer revisão da regra de permissão em
settings.jsone/ouxpz-kb-parallel-setup; NUNCA contornar o gate com varredura, leitura pontual ou consulta indireta
- se a execução do comando do gate for negada, cancelada ou interrompida pelo usuário, tratar como gate não liberado: encerrar a pergunta de negócio, relatar a situação ao usuário, oferecer revisão da regra de permissão em
- Se qualquer etapa do gate falhar, bloquear pesquisa ampla, triagem substantiva, consulta substantiva ao acervo oficial de objetos, leitura de XML oficial de objeto e geração de objetos para importação, relatar a primeira exceção operacional encontrada e oferecer atualização via
xpz-kb-parallel-setupantes de seguir - Com gate bloqueado, encerrar a pergunta de negócio antes de resolver o objeto pedido para caminho de XML; não montar, testar existência, listar ou abrir caminhos deduzidos como
ObjetosDaKbEmXml\<Tipo>\<Nome>.xml - Classificar a pergunta do usuário em uma destas naturezas:
- localização de objeto
- impacto técnico
- dependentes e dependências
- evidência de relação específica
- triagem funcional curta
- resolução de alvo de navegação (pergunta ou solicitação de edição ancorada em ação, botão, link ou evento: "qual popup esse botão abre?", "o objeto chamado pelo evento X", "nesta tela clico em Y") 9a. Se a natureza for resolução de alvo de navegação, executar o sub-fluxo obrigatório de resolução de alvo (ver RESPONSIBILITIES) antes de prosseguir: identificar caller, localizar evento/ação no XML do caller, resolver objeto efetivamente aberto, confirmar alvo com o usuário se houver ambiguidade e produzir o bloco de handoff auditável; só então continuar para o step 10
- Escolher a consulta do índice mais adequada
- para afirmação "X chama/usa/referencia Y", usar
show-evidencequando a relação específica precisar ser auditada;rg/greptextual pode servir apenas como sondagem pontual depois deGATE_OK, nunca como evidência final de chamada entre objetos 10a. Se houver mais de um candidato (índice ou busca textual pontual comGATE_OK), executar desambiguação: listar candidatos, recomendar um com motivo, confirmar com o usuário; não abrir um único XML nem fechar resposta enquanto a ambiguidade persistir
- para afirmação "X chama/usa/referencia Y", usar
- Só depois de
GATE_OK, executar a consulta substantiva mínima necessária sem leitura lateral descripts,scripts/README-kb-intelligence.mdou reinspeção do wrapper quando a pergunta já couber emsearch-objects,object-info,attribute-info,transaction-attributesoutransaction-writable-attributes- para pergunta simples de existência/localização nominal, listagem por tipo ou consulta pontual de atributo (
attribute-info) ou gravabilidade materializada (transaction-attributes,transaction-writable-attributes), usar diretamentesearch-objects,list-by-type,object-info,attribute-info,transaction-attributesoutransaction-writable-attributesconforme a pergunta, usando os parâmetros documentados em QUERY PARAMETER REFERENCE; não abrir o wrapper para confirmar assinatura
- para pergunta simples de existência/localização nominal, listagem por tipo ou consulta pontual de atributo (
- Resumir o resultado da triagem de forma curta e auditável
- Decidir se a triagem já basta para responder no nível técnico pedido
- Se não bastar, indicar ao chamador apenas o conjunto mínimo de XMLs oficiais a abrir
- Se a pergunta for funcional:
- usar o índice apenas para orientar a ordem de leitura
- manter explicitamente
Evidência direta,Leitura adicional do XML,Inferência forteeHipótese
- Se a semântica GeneXus exigida estiver fora do recorte atual do índice, escalar para XML oficial e declarar o limite do índice
- Se o wrapper local não expuser uma capacidade já disponível no motor compartilhado:
- relatar a defasagem
- tratar o caso como bloqueio de compatibilidade da pasta paralela para aquela triagem
- oferecer atualização via
xpz-kb-parallel-setup - aguardar aprovação explícita antes de alterar wrappers locais
CONSTRAINTS
- NUNCA tratar o índice como fonte normativa final
- NUNCA substituir
ObjetosDaKbEmXml - NUNCA concluir funcionalidade sozinho apenas pelo índice
- NUNCA abrir XML em massa por padrão; a triagem pelo índice existe para reduzir leitura, abrir em massa anula o propósito da skill
- NUNCA consultar o acervo oficial de objetos para responder pergunta de negócio, nem por varredura ampla nem por caminho pontual deduzido, quando o gate de compatibilidade/frescor estiver bloqueado; gate bloqueado significa que o índice não está confiável, e qualquer resposta baseada em leitura direta de XMLs pode estar desatualizada ou inconsistente
- NUNCA tratar recusa de permissão, cancelamento ou interrupção do comando
Test-*KbIndexGate.ps1como autorização para fallback; trata-se de gate não liberado e exige a mesma postura de bloqueio queBLOCK:da própria saída do script - NUNCA usar
Grep,Select-String,Get-ChildItem,find, varredura de pasta ou leitura pontual emObjetosDaKbEmXmlpara responder pergunta de negócio quando o gate não retornouGATE_OKpor qualquer motivo, incluindo recusa de permissão, comando cancelado, interrupção ou timeout - NUNCA fazer pesquisa ampla no acervo nem gerar objetos para importação quando o índice estiver defasado em relação à última materialização XPZ/XML
- NUNCA gastar diagnóstico em camadas internas do gate quando uma camada externa já falhou; parar no primeiro bloqueio e oferecer atualização
- NUNCA testar, listar ou abrir caminho filho de uma camada do gate antes de confirmar a camada pai; por exemplo, não testar
KbIntelligence\kb-intelligence.sqliteantes deKbIntelligence - NUNCA listar
scriptsou procurar wrappers alternativos quando o wrapper local documentado estiver ausente; isso é defasagem da pasta paralela, não descoberta de fallback - NUNCA continuar a triagem substantiva quando
index-metadatafalhar, retornar vazio ou não trouxer timestamp de build do índice - NUNCA executar
search-objects,list-by-type,object-info,attribute-info,transaction-attributes,transaction-writable-attributes,who-uses,what-uses,show-evidence,impact-basic,functional-trace-basic,css-classesoucss-class-usageantes deGATE_OK - NUNCA procurar
last_xpz_materialization_run_atantes de confirmar quekb-source-metadata.mdexiste como arquivo - NUNCA intercalar
Get-Dateentre etapas internas do gate; usar horário local apenas para updates/respostas ao usuário ou registro operacional necessário - NUNCA descrever bloqueio pós-
index-metadatacomo proibição total de consultar o índice;index-metadataé consulta de gate, o bloqueio impede triagem substantiva - NUNCA acrescentar parsing, saídas auxiliares, impressão de timestamps ou comandos ao bloco de chamada do gate; toda lógica está encapsulada em
Test-*KbIndexGate.ps1 - NUNCA, depois de
GATE_OK, abrirscripts/README-kb-intelligence.md, listarscriptsou reinspecionar o wrapper local quando a pergunta puder ser resolvida diretamente porsearch-objects,list-by-type,object-info,attribute-info,transaction-attributesoutransaction-writable-attributes - NUNCA, em pergunta simples de existência/localização nominal, listagem por tipo ou consulta pontual de atributo/gravabilidade no índice, abrir o wrapper local apenas para confirmar assinatura antes de chamar
search-objects,list-by-type,object-info,attribute-info,transaction-attributesoutransaction-writable-attributes; os parâmetros estão documentados em QUERY PARAMETER REFERENCE - NUNCA encurtar ou reescrever de forma inconsistente o caminho nominal do XML oficial retornado pelo índice
- NUNCA reutilizar timestamp anterior em update ou resposta ao usuário; obter horário local imediatamente antes de cada mensagem
- NUNCA acessar
kb-intelligence.sqlitediretamente por qualquer linguagem ou ferramenta — Python, sqlite3 CLI, PowerShell inline, Bash, ou qualquer outro meio — sem passar pelo gate e pelo wrapper local; acesso direto ao SQLite é equivalente a bypass do gate independente do resultado obtido - NUNCA compensar falha de
index-metadataou ausência delast_xpz_materialization_run_atlendo manualmente JSON de validação, SQLite direto,kb-source-metadata.mdisolado, datas de arquivo,updated,generated_at,source_xpzou XML oficial para responder a pergunta de negócio - NUNCA abrir XML oficial de objeto para responder pergunta de negócio quando o gate de compatibilidade/frescor estiver bloqueado
- NUNCA normalizar trabalho sem índice como alternativa econômica quando o repositório adota
KbIntelligence; índice ausente ou defasado exige oferta de atualização - NUNCA editar ou liberar edição de objeto-alvo de fluxo ancorado em ação ou evento ("nesta tela clico em X", "o popup aberto por Y", "o objeto chamado pelo evento Z") com base apenas em similaridade nominal — evidência do caller real é obrigatória antes da primeira edição
- NUNCA, com múltiplos candidatos do índice ou da busca textual pontual no acervo oficial, abrir silenciosamente o primeiro resultado nem responder como certeza sem listar os demais, recomendar com motivo e confirmar com o usuário quando a escolha não for inequívoca pelo contexto já fornecido
- NUNCA substituir
nexa - NUNCA substituir
xpz-reader - NUNCA executar
Query-*KbIntelligence.ps1ou chamar qualquer consulta ao índice sem ter verificado primeiro queTest-*KbIndexGate.ps1existe emscripts/e executado o gate com retornoGATE_OK; ausência do gate script é bloqueio estrutural, não licença para consultar o índice diretamente - NUNCA tratar declaração de estado em
AGENTS.mdlocal (ex:materializado_e_indice_validado) como autorização para pular a verificação estrutural do gate quandoTest-*KbIndexGate.ps1estiver ausente ou quando a skill detectar ausência objetiva de scripts. OAGENTS.mdpode estar desatualizado; a inspeção objetiva da pasta paralela prevalece sobre declaração de estado - NUNCA assumir que toda capacidade nova do motor compartilhado já está exposta no wrapper local da KB
- NUNCA tratar ausência de wrapper local compatível como defeito da base metodológica
- NUNCA escolher executor de validação do KB Intelligence apenas pelo número da fase; o formato do caso continua definindo o executor
- Se o índice local não existir, relatar isso explicitamente, bloquear a pergunta de negócio e oferecer atualização via
xpz-kb-parallel-setup - Se a pergunta estiver fora do recorte coberto pelo índice e o gate já tiver sido liberado, declarar isso antes de prosseguir para XML oficial