xpz-index-triage
Usa índice derivado da KB para triagem inicial e orienta o chamador a abrir apenas os XMLs oficiais realmente necessários
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Usa índice derivado da KB para triagem inicial e orienta o chamador a abrir apenas os XMLs oficiais realmente necessários
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Generates and clones GeneXus XPZ objects conservatively — validates structure, applies risk rules, serializes envelope
Valida o estado de uma pasta paralela de KB GeneXus antes do push (rotina pré-push de pasta paralela), rodando o orquestrador de gates mecânicos local do repositório ativo; não é a rotina pré-push do repositório de skills (documento 13)
Prepara e valida a estrutura inicial da pasta paralela da KB para carga inicial, sync de XPZ, índice derivado e artefatos de importação
Skill para importação e exportação de XPZ via MSBuild, com execução sem interface gráfica, parâmetros explícitos, rastreabilidade e gates (pontos de liberação ou bloqueio) de segurança
Permite ao agente principal delegar tarefas menores, pedir segunda opinião ou conduzir revisão por pares/peer review de plano/design por painel multi-modelo via opencode, Codex, Claude Code (Opus 4.8), GitHub Copilot CLI ou Gemini CLI; ao receber "revisão por pares", carregar esta skill, perguntar revisores preferidos se não houver preferred-reviewers.json, não presumir assinatura externa e nunca rotular parecer solo como revisão por pares; acionamento sempre humano
Skill para validação de build pós-import via MSBuild, com execução sem interface gráfica, parâmetros explícitos, classificação de resultado e gates de segurança contra reorg não autorizada
| 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 |
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.
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.
GATE_OK, o índice está apto para triagem inicialBLOCK: <motivo>, tratar o índice como defasado/incompatívelO 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.
SKILL.md fica dentro de uma subpasta de skill sob a raiz do repositório.../arquivo.md deve ser resolvida a partir da pasta deste SKILL.md, e não do diretório de trabalho corrente.../ aponta para a base metodológica compartilhada na pasta-pai desta skill.Use esta skill para:
ObjetosDaKbEmXmlDo NOT use this skill for:
XPZKbIntelligence\kb-intelligence.sqliteREADME.md e AGENTS.md locais do repositório alvo antes de depender do índicelast_index_build_run_at contra last_xpz_materialization_run_at antes da primeira consulta substantivaindex-metadata no wrapper local quando disponível para ler metadados do SQLiteindex-metadata existir, mas falhar, retornar vazio, não expuser last_index_build_run_at ou não expuser inventory_validation_status, tratar como índice sem metadado válido; não prosseguir com triagem substantiva antes de oferecer regeneração/validaçãokb-source-metadata.md não expuser literalmente last_xpz_materialization_run_at, tratar como metadado de materialização incompatível; não inferir frescor por data de arquivo, updated, generated_at, source_xpz ou outros camposindex-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 via xpz-kb-parallel-setupobject-infoattribute-infosearch-objectslist-by-typetransaction-attributestransaction-writable-attributeswho-useswhat-usesshow-evidenceimpact-basicfunctional-trace-basiccss-classescss-class-usageEvent, Action, Link, Window.Object, Create(...), formatLink, context.NewWindow, URL gerada)Para localizar objeto, dependência ou ponto de leitura inicial, preferir consultas do índice (search-objects, object-info, who-uses, what-uses, etc.) depois de GATE_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/grep bruto como base de conclusão quando o índice estiver apto. O fluxo obrigatório é impact-basic/who-uses/what-uses e, para uma relação específica, show-evidence ou leitura do XML oficial em bloco correto.
Antes de who-uses, what-uses, impact-basic ou functional-trace-basic, conferir no catálogo efetivo (scripts/gx-object-type-catalog.json + override local) se o tipo tem queryableByKbIntelligence=true; quando for false, o query devolve exit 11 e blocked=true — não tratar como “zero dependências”; usar object-info, search-objects, list-by-type ou XML pontual (lista no JSON).
Tipos com queryableByKbIntelligence=true e grafo assimétrico (API, DataSelector, WorkWith, WorkWithForWeb, ExternalObject): ver scripts/README-kb-intelligence.md — impact-basic com só saídas ou entradas esparsas pode ser resposta válida. Para os dois Work With, classificar sempre pelo GUID; nomes históricos podem ser ambíguos.
Em ExternalObject, distinguir referência declarativa por ATTCUSTOMTYPE de uso efetivo por chamada de método em variável exo:<ExternalObject>; quando a pergunta for "quem toca/usa este objeto externo", preferir who-uses e conferir extractor_rule/show-evidence antes 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 com GATE_OK e sem varredura ampla desnecessária.
Para busca textual pontual em XML de WebPanel, evitar rg/grep bruto quando a pergunta for sobre evento, chamada, validação, filtro ou fluxo; primeiro usar scripts\Search-GeneXusXmlSourceBlock.ps1 -Block events ou extração estruturada equivalente para não confundir match em GxMultiForm de 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-classes e css-class-usage só podem rodar depois que o gate terminar liberado
Depois de GATE_OK, ir direto para a consulta substantiva mínima necessária; não abrir scripts/README-kb-intelligence.md, não listar scripts e não reinspecionar o wrapper local se a pergunta já puder ser atendida com consulta simples como search-objects, object-info, attribute-info, transaction-attributes ou transaction-writable-attributes
Em 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 chamar search-objects, list-by-type, object-info, attribute-info, transaction-attributes ou transaction-writable-attributes
Devolver 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 ObjetosDaKbEmXml
Quando a pergunta for funcional curta, manter a separação entre:
Evidência diretaLeitura adicional do XMLInferência forteHipóteseExplicitar 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.md seção "Limite do XPZ/XML frente a providers e extensões GeneXus".
last_index_build_run_at >= last_xpz_materialization_run_at e inventory_validation_status=OKindex-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á bloqueadaObjetosDaKbEmXml para responder a pergunta de negóciosettings.json e/ou rodar xpz-kb-parallel-setup; não prometer "tentar de outro jeito"Evidência diretaLeitura adicional do XMLInferência forteHipóteseCaller 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>
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.
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):
-ObjectName (obrigatório salvo se -InstanceKey for passado; aceita substring parcial com wildcard *, ex: "*planilha*"), -InstanceKey (opcional; nome plano da instância WorkWithForWeb ou chave completa <GUID>-<nome>; lista os objetos gerados por essa instância — rota para "quais objetos o WorkWithWeb<X> gerou"; correspondência exata ignorando caixa; combina em AND com os demais filtros), -ObjectType (opcional, filtra por tipo), -Generated/-Authored (opcional, mutuamente exclusivos: só objetos gerados por Pattern x só autorais), -Limit (opcional); a saída de cada objeto inclui is_generated_object/pattern_object_id/instance_key/instance_name (nome da instância derivado, null quando não derivável)-ObjectType (obrigatório, tipo exato, ex: Procedure), -Generated/-Authored (opcional, mutuamente exclusivos: gerados por Pattern x autorais), -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"; a saída de cada objeto inclui is_generated_object/pattern_object_id/instance_key/instance_name (nome da instância derivado, null quando não derivável)-ObjectType (obrigatório, tipo exato, ex: Procedure), -ObjectName (obrigatório, nome exato do objeto); a saída inclui is_generated_object (0/1), pattern_object_id, instance_key e instance_name (nome da instância derivado) — sinal determinístico gerado-por-Pattern x autoral, preferível à heurística de nome (ww*/*WC/*General/*Selection) para auditoria autoral x gerado-ObjectName (obrigatório, nome exato do atributo); retorna sinais leves como Formula e idBasedOn sem varrer o acervo inteiroProcedure (e alvos resolvidos em Formula de Attribute): o índice inclui dependências via Property Formula quando o padrão de chamada coincide com Source efetivo; para semântica da expressão ou funções não indexadas, abrir o XML do atributoTest-GeneXusTransactionWritability.ps1, que delega ao núcleo Python); use para triagem e impacto de New em atributos; unclassified-* exige XML; blocos New em Procedure ainda passam por Test-GeneXusNewWritableTargets.ps1-ObjectName (obrigatório, nome exato da Transaction); lista atributos por Level com classificação materializada; para empacote com atribuições ou blocos New, use os gates completos da skill xpz-buildercss_class, estilo-inventário; não exige queryableByKbIntelligence). -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-theme sai marcado deprecated=true (candidato a migração para DesignSystem)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 agirA documentação completa de todas as consultas e seus parâmetros está em scripts/README-kb-intelligence.md.
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".
Bash em vez de PowerShellJoin-Path ou montagem indiretaWrite-Host, Get-Date, saídas auxiliares ou comandos extras ao mesmo bloco do gateGATE_OK, reinspecionar o wrapper local ou abrir scripts/README-kb-intelligence.md sem necessidade quando a pergunta já cabe em search-objects, list-by-type ou object-infoREADME.md e AGENTS.md locais; ao reler o AGENTS.md, verificar se contém a seção ## Triagem Por Indice — se ausente em pasta que adota KbIntelligence, tratar como estrutura desatualizada e rotear para xpz-kb-parallel-setup antes de qualquer triagemxpz-kb-parallel-setupObjetosDaKbEmXml ou comando Query-*KbIntelligence.ps1 pode ocorrer antes de Test-*KbIndexGate.ps1 retornar GATE_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-attributes e transaction-writable-attributes estão proibidos antes do gate.Test-*KbIndexGate.ps1 em scripts\; se ausente, bloquear como defasagem da pasta paralela e oferecer atualização via xpz-kb-parallel-setupTest-*KbIndexGate.ps1; o script verifica sequencialmente: estrutura da pasta paralela via Test-*KbStructure.ps1, pasta KbIntelligence, kb-intelligence.sqlite, wrapper local de consulta com -Query index-metadata, inventory_validation_status, kb-source-metadata.md e comparação de timestamps; qualquer BLOCK: encerra a pergunta de negócio
settings.json e/ou xpz-kb-parallel-setup; NUNCA contornar o gate com varredura, leitura pontual ou consulta indiretaxpz-kb-parallel-setup antes de seguirObjetosDaKbEmXml\<Tipo>\<Nome>.xmlshow-evidence quando a relação específica precisar ser auditada; rg/grep textual pode servir apenas como sondagem pontual depois de GATE_OK, nunca como evidência final de chamada entre objetos
10a. Se houver mais de um candidato (índice ou busca textual pontual com GATE_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 persistirGATE_OK, executar a consulta substantiva mínima necessária sem leitura lateral de scripts, scripts/README-kb-intelligence.md ou reinspeção do wrapper quando a pergunta já couber em search-objects, object-info, attribute-info, transaction-attributes ou transaction-writable-attributes
attribute-info) ou gravabilidade materializada (transaction-attributes, transaction-writable-attributes), usar diretamente search-objects, list-by-type, object-info, attribute-info, transaction-attributes ou transaction-writable-attributes conforme a pergunta, usando os parâmetros documentados em QUERY PARAMETER REFERENCE; não abrir o wrapper para confirmar assinaturaEvidência direta, Leitura adicional do XML, Inferência forte e Hipótesexpz-kb-parallel-setupObjetosDaKbEmXmlTest-*KbIndexGate.ps1 como autorização para fallback; trata-se de gate não liberado e exige a mesma postura de bloqueio que BLOCK: da própria saída do scriptGrep, Select-String, Get-ChildItem, find, varredura de pasta ou leitura pontual em ObjetosDaKbEmXml para responder pergunta de negócio quando o gate não retornou GATE_OK por qualquer motivo, incluindo recusa de permissão, comando cancelado, interrupção ou timeoutKbIntelligence\kb-intelligence.sqlite antes de KbIntelligencescripts ou procurar wrappers alternativos quando o wrapper local documentado estiver ausente; isso é defasagem da pasta paralela, não descoberta de fallbackindex-metadata falhar, retornar vazio ou não trouxer timestamp de build do índicesearch-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-classes ou css-class-usage antes de GATE_OKlast_xpz_materialization_run_at antes de confirmar que kb-source-metadata.md existe como arquivoGet-Date entre etapas internas do gate; usar horário local apenas para updates/respostas ao usuário ou registro operacional necessárioindex-metadata como proibição total de consultar o índice; index-metadata é consulta de gate, o bloqueio impede triagem substantivaTest-*KbIndexGate.ps1GATE_OK, abrir scripts/README-kb-intelligence.md, listar scripts ou reinspecionar o wrapper local quando a pergunta puder ser resolvida diretamente por search-objects, list-by-type, object-info, attribute-info, transaction-attributes ou transaction-writable-attributessearch-objects, list-by-type, object-info, attribute-info, transaction-attributes ou transaction-writable-attributes; os parâmetros estão documentados em QUERY PARAMETER REFERENCEkb-intelligence.sqlite diretamente 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 obtidoindex-metadata ou ausência de last_xpz_materialization_run_at lendo manualmente JSON de validação, SQLite direto, kb-source-metadata.md isolado, datas de arquivo, updated, generated_at, source_xpz ou XML oficial para responder a pergunta de negócioKbIntelligence; índice ausente ou defasado exige oferta de atualizaçãonexaxpz-readerQuery-*KbIntelligence.ps1 ou chamar qualquer consulta ao índice sem ter verificado primeiro que Test-*KbIndexGate.ps1 existe em scripts/ e executado o gate com retorno GATE_OK; ausência do gate script é bloqueio estrutural, não licença para consultar o índice diretamenteAGENTS.md local (ex: materializado_e_indice_validado) como autorização para pular a verificação estrutural do gate quando Test-*KbIndexGate.ps1 estiver ausente ou quando a skill detectar ausência objetiva de scripts. O AGENTS.md pode estar desatualizado; a inspeção objetiva da pasta paralela prevalece sobre declaração de estadoxpz-kb-parallel-setup