power-automate
Skill3 starsChanged 41 days agoMITView on GitHub
Use quando o trabalho envolver flow do Power Automate: desenhar ou revisar um flow chamado pelo app (trigger Power Apps V2, Response de 4 campos, Try/Catch, Switch por ação), cola esse flow no designer (clipboard, escopo colável, allConnectionData), autorização e escopo por unidade dentro do flow, chamar procedure SQL (Execute stored procedure), receber lote de sistema externo por HTTP com token, gravar no Dataverse por $batch/upsert, escopo de log, expressão que estoura em execução (if não curto-circuita, string(null), outputs de Select), contrato tela-flow-procedure, ou verificar um JSON de flow. Não use para a chamada .Run() do lado do app (use `powerapps-canvas`), a procedure e o DDL (use `sql-procedures`), tabelas e Security Role (use `dataverse`), nem ambientes, soluções e connection references em geral (use `power-platform`).
2 other projects use a version of this.
Adopted by
Most recently taken up by
- delorenj/skillstheir own version, first seen Nov 1, 2026
- korchard333/claude-power-platform-communitytheir own version, first seen Apr 4, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- korchard333/claude-power-platform-community★ 46same name
- delorenj/skills★ 17same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository17 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- arquiteturaSkill
- brainstormSkill
- construirSkill
- dataverseSkill
- designSkill
- homologarSkill
- mockupsSkill
- mudancaSkill
- novoSkill
- powerapps-canvasSkill
- power-platformSkill
- progressoSkill
- prototipoSkill
- publicarSkill
- sql-proceduresSkill
- testarSkill
The file
Files
power-automate
Produz flows do Power Automate coláveis no designer e verificáveis: o escopo JSON com a
anatomia padrão (autorizar -> normalizar -> validar -> gravar -> responder, Catch completo),
o contrato com a tela, o desenho de SQL, HTTP, $batch e log, e o scripts/verificar-fluxo.py
que acusa os defeitos que só estouram em execução. Padrões decididos (F1-F6, C1-C6, A1-A4) estão
em decisoes-padrao.md -- esta skill os
implementa, não os redefine.
Regras inegociáveis
- O flow decide; a procedure executa. O flow normaliza, valida, autoriza e traduz o código da escrita em mensagem. Por quê: regra no cliente é contornável e a conta do conector é compartilhada.
- A identidade do chamador vem do contexto (
MyProfile_V2), nunca de parâmetro do trigger. Por quê: quem chama por fora da tela diria quem é. - Autorização por ação: cada
Caso_<acao>confere a flag da própria ação antes da primeira escrita; zero linha de perfil = negar. Por quê: um portão único antes doSwitchdeixou quem cadastra encerrar de forma irreversível. - Flag de segurança nasce ligada em
CONFIG. Por quê: um escopo por unidade nasceu desligado e qualquer perfil gravou em qualquer unidade. - Resposta sempre com os 4 campos
{status, description, id, url}(texto),statusemsuccess|warning|error. Por quê: a tela lêret.urlnum flow que não exporta. - Todo
Nega_*é um parResponse+Terminate. Por quê:Responsenão encerra o flow; o próximo nó roda com a resposta já enviada. - O
CatchescutaFailed,TimedOuteSkipped. Por quê: os irmãos doTry(perfil, chamador) falhando deixam oTrySkippede a execução termina semResponse. - Parâmetros do trigger são posicionais e texto; parâmetro novo entra no fim. Por quê: inserir no meio faz os valores deslizarem e o flow grava o campo errado sem erro.
- Escrita em SQL só por
Execute stored procedure (V2); nome de procedure e de connection reference vêm do ambiente, nunca do documento. Por quê:Insert/Update rownão funciona com trigger no servidor e nomes supostos custaram colagens. - Nenhum nome de ambiente literal fora do
CONFIG(servidor, GUID, tabeladev*): variável de ambiente e connection reference. Por quê: promover para produção vira editar o flow. - Protege o argumento, não a condição:
if()avalia os dois ramos, estring(null)é''. Por quê: as duas coisas estouraram em execução, em sítios que "já tinham sido corrigidos". - O arquivo que o designer devolveu é o gabarito; gerador só escreve em
dist/. Por quê: regerar sobre o gabarito apagou uma correção que só existia no disco. - Entrada externa por trigger HTTP separado, credencial no cabeçalho, resposta derivada do
resultado real da validação. Por quê: uma
Condiçãode constantes deixou o ramo 401 morto.
Fluxo de trabalho
- Comece pelo catálogo (
assets/componentes/INDICE.md): se existe bloco para a peça, use-o em vez de escrever do zero. Depois classifique a tarefa e carregue só o que ela pede:
| Tarefa | Carregue |
| Desenhar ou revisar um flow chamado pela tela | references/anatomia-flow.md, references/contrato-app-flow.md, assets/flow-gravar-molde.json |
Montar um flow por peças (CONFIG, chamador, Switch, autorizar, gravar, Catch, log, HTTP, $batch…) | assets/componentes/INDICE.md — 34 blocos coláveis, cada um validado, com ordem de montagem |
| Permissão, perfil, escopo por unidade | references/autorizacao-no-flow.md |
| Entregar/colar no designer, montar o JSON | references/formato-clipboard.md, references/gabarito-designer.md |
| Expressão que falha só em execução | references/expressoes-wdl-armadilhas.md |
| Flow que grava em SQL | references/sql-no-flow.md (a procedure é de sql-procedures) |
| Receber lote de sistema externo | references/http-entrada-externa.md, references/dataverse-batch-upsert.md |
Criar tabelas e carga mockup no Dataverse pela Web API (flow pronto, $batch) | skills/power-platform/references/construtor-dataverse.md (do orquestrador) |
| Log de execução, suporte | references/log-execucao.md |
| Gerar flows por script, pipeline | references/gerador-e-gabarito.md |
| Documento de contrato | assets/contrato-flow-molde.md |
| Entender de onde veio um padrão | references/licoes-de-campo.md |
- Mapeie antes de escrever: ambiente e idioma do designer; connection references que
existem (
power-platform); nome AS-BUILT da procedure ou da tabela (sql-procedures,dataverse); quais ações o flow tem e a flag de cada uma; destino do log (ADR). - Escreva o contrato primeiro (
assets/contrato-flow-molde.md): chamada, tabela de parâmetros posicionais, autorização por ação, tabela código -> mensagem. - Parta do molde
assets/flow-gravar-molde.json: troque<procedure_...>,<prefixo>_...e os nomes de ação; mantenha a estrutura. O trigger é digitado à mão na ordem do contrato (não é colável). - Verifique antes de colar (e de novo no que o designer devolver):
python <pasta-da-skill>/scripts/verificar-fluxo.py <arquivo-ou-pasta>. - Cole (
Ctrl+Vno ponto de inserção do designer, de cima para baixo; o trigger já deve existir), religue as conexões, rode com um usuário de teste sem permissão, um com permissão e um de outra unidade, e confira o histórico. - Devolva o que o designer devolveu ao gabarito (arquivo somente leitura) e, se for gerar,
traga as diferenças para o gerador antes do segundo flow (
gerador-e-gabarito.md).
Referências
| Arquivo | Quando ler |
references/anatomia-flow.md | Antes de desenhar qualquer flow chamado pela tela; Nega/Terminate e Catch |
references/contrato-app-flow.md | Trigger, Response de 4 campos, código -> mensagem, parâmetro novo, job assíncrono |
references/autorizacao-no-flow.md | Perfil, flag por ação, escopo por unidade, fail-closed |
references/formato-clipboard.md | Envelopes de escopo e de folha, como colar, allConnectionData, idioma do trigger |
references/gabarito-designer.md | R1-R13: o que o designer devolve, o que bloqueia e o que só normaliza |
references/expressoes-wdl-armadilhas.md | if(), string(null), outputs() x body(), bit, 8.192 caracteres, @{} |
references/sql-no-flow.md | Execute stored procedure (V2), ler o retorno, limites do conector |
references/http-entrada-externa.md | Trigger Request, token no cabeçalho, status real, aceite x síncrono, N=1 x lote |
references/dataverse-batch-upsert.md | $batch, changeset, upsert, 429, paginação |
references/log-execucao.md | Escopo Log, tabelas pai/filho, workflow().run.name, tensão com Terminate |
references/gerador-e-gabarito.md | Gerador seguro, gabarito imutável, round-trip |
references/licoes-de-campo.md | Defeitos reais de flows (SQL, HTTP + $batch) e a regra que previne cada um |
assets/componentes/INDICE.md | Catálogo de blocos coláveis (.md explicado + .json validado), maturidade e ordem de montagem |
assets/flow-gravar-molde.json | Escopo colável de partida (passa no verificador) |
assets/contrato-flow-molde.md | Molde do contrato tela <-> flow <-> procedure |
Scripts
<pasta-da-skill> é o Base directory que aparece quando a skill é carregada. Rode da raiz do projeto (o script procura power-platform.config.json do diretório atual para cima) ou passe --config.
| Comando | O que checa | Exit |
python <pasta-da-skill>/scripts/verificar-fluxo.py <arquivo|pasta> | F001 JSON; F002 envelope; F003/F019 identidade e segmentos do nó; F004 nome duplicado; F005 runAfter órfão; F006 referência a ação inexistente; F007 items(); F008 caso de Switch; F009 Catch sem Skipped; F010 Response sem os 4 campos; F011 outputs() de Select/Query; F012 coalesce(string()); F013 expressão > 8.192; F014 literal de ambiente; F015 Response sem Terminate; F016 condição constante; F017 conexão ausente; F018 @{} em parâmetro; F020 condição de If em texto ou sem and/or; F021 Inicializar variável fora da raiz; F022 variável sozinha num campo colado; F023 Fazer até em texto colado | 0 sem erro, 1 com erro, 2 uso incorreto |
python <pasta-da-skill>/scripts/verificar-fluxo.py --estrito <...> | também coalesce(string(x), '') (F012) | idem |
python <pasta-da-skill>/scripts/verificar-fluxo.py --config <arquivo> | usa pastas.flows e ignorar de power-platform.config.json | idem |
Formatos lidos: envelope de escopo e de folha do clipboard (.json, ou .md com só o JSON) e
definition de solução exportada. Só lê; saída caminho:ação: ERRO|AVISO Fnnn mensagem.
Definição de pronto
Comandos da raiz do projeto (ver nota em Scripts).
python <pasta-da-skill>/scripts/verificar-fluxo.py <flow>->0 erro(s)(avisos lidos e justificados no contrato).- Contrato do flow preenchido; nº de argumentos do
.Run()== nº de parâmetros do trigger. - Teste de negação executado: usuário sem a flag da ação recebe
errore nada é gravado. - Teste de falha de conector: com a connection reference desligada, o app recebe a mensagem do
Catch(nunca timeout). - Nenhum literal de ambiente fora do
CONFIG(F014 limpo ou aviso justificado). - O JSON devolvido pelo designer está em
gabarito/(somente leitura) e nenhum gerador escreve sobre ele. - Tarefa marcada feita traz a coluna Evidência: comando, saída e data (P2).
Armadilhas
if()não protege a chamada de dentro: proteja o argumento -- expressoes-wdl-armadilhas.md §1.coalesce(string(x), '0')nunca cai no fallback -- mesmo arquivo, §2.outputs('Select')devolve o envelope; usebody()-- §3.bitdo SQL chegatrue/false; comparar com1ou com o booleanotrueinverte a regra -- §4.- Caso de
Switchcom nome de ação derruba a colagem -- anatomia-flow.md §5. CatchsemSkipped: execução semResponse-- mesmo arquivo, §4.ResponsesemTerminateresponde duas vezes -- mesmo arquivo, §3.- Ordem
mail/userPrincipalNameinvertida nega todo mundo -- autorizacao-no-flow.md §1. - Rodar o gerador com edição manual no disco apaga a correção -- gerador-e-gabarito.md §2.
- 200 antes de gravar sem declarar que é aceite -- http-entrada-externa.md §5.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
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.

