@brunosps00/dev-workflow 0.0.3 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/README.md +42 -42
  2. package/bin/dev-workflow.js +6 -4
  3. package/lib/constants.js +42 -40
  4. package/lib/init.js +66 -19
  5. package/package.json +1 -1
  6. package/scaffold/en/commands/{analyze-project.md → dw-analyze-project.md} +69 -40
  7. package/scaffold/en/commands/{brainstorm.md → dw-brainstorm.md} +31 -4
  8. package/scaffold/en/commands/{bugfix.md → dw-bugfix.md} +63 -19
  9. package/scaffold/en/commands/{code-review.md → dw-code-review.md} +38 -15
  10. package/scaffold/en/commands/{commit.md → dw-commit.md} +25 -0
  11. package/scaffold/en/commands/{create-prd.md → dw-create-prd.md} +24 -10
  12. package/scaffold/en/commands/{create-tasks.md → dw-create-tasks.md} +11 -4
  13. package/scaffold/en/commands/{create-techspec.md → dw-create-techspec.md} +38 -11
  14. package/scaffold/en/commands/{deep-research.md → dw-deep-research.md} +18 -17
  15. package/scaffold/en/commands/{fix-qa.md → dw-fix-qa.md} +20 -3
  16. package/scaffold/en/commands/dw-functional-doc.md +276 -0
  17. package/scaffold/en/commands/{generate-pr.md → dw-generate-pr.md} +20 -5
  18. package/scaffold/en/commands/dw-help.md +309 -0
  19. package/scaffold/en/commands/{refactoring-analysis.md → dw-refactoring-analysis.md} +50 -26
  20. package/scaffold/en/commands/{review-implementation.md → dw-review-implementation.md} +25 -6
  21. package/scaffold/en/commands/{run-plan.md → dw-run-plan.md} +21 -6
  22. package/scaffold/en/commands/{run-qa.md → dw-run-qa.md} +32 -13
  23. package/scaffold/en/commands/{run-task.md → dw-run-task.md} +17 -7
  24. package/scaffold/en/references/playwright-patterns.md +136 -0
  25. package/scaffold/en/references/refactoring-catalog.md +167 -0
  26. package/scaffold/en/templates/brainstorm-matrix.md +44 -0
  27. package/scaffold/en/templates/functional-doc/case-matrix.md +5 -0
  28. package/scaffold/en/templates/functional-doc/e2e-runbook.md +3 -0
  29. package/scaffold/en/templates/functional-doc/features.md +3 -0
  30. package/scaffold/en/templates/functional-doc/overview.md +21 -0
  31. package/scaffold/en/templates/functional-doc/playwright.spec.ts.tpl +19 -0
  32. package/scaffold/en/templates/pr-bugfix-template.md +28 -0
  33. package/scaffold/en/templates/qa-test-credentials.md +37 -0
  34. package/scaffold/en/templates/tasks-template.md +1 -1
  35. package/scaffold/en/templates/techspec-template.md +1 -1
  36. package/scaffold/pt-br/commands/{analyze-project.md → dw-analyze-project.md} +94 -44
  37. package/scaffold/pt-br/commands/{brainstorm.md → dw-brainstorm.md} +32 -5
  38. package/scaffold/pt-br/commands/{bugfix.md → dw-bugfix.md} +73 -16
  39. package/scaffold/pt-br/commands/{code-review.md → dw-code-review.md} +80 -17
  40. package/scaffold/pt-br/commands/{commit.md → dw-commit.md} +45 -1
  41. package/scaffold/pt-br/commands/{create-prd.md → dw-create-prd.md} +25 -10
  42. package/scaffold/pt-br/commands/{create-tasks.md → dw-create-tasks.md} +24 -17
  43. package/scaffold/pt-br/commands/{create-techspec.md → dw-create-techspec.md} +40 -13
  44. package/scaffold/pt-br/commands/{deep-research.md → dw-deep-research.md} +19 -11
  45. package/scaffold/pt-br/commands/{fix-qa.md → dw-fix-qa.md} +30 -1
  46. package/scaffold/pt-br/commands/dw-functional-doc.md +276 -0
  47. package/scaffold/pt-br/commands/{generate-pr.md → dw-generate-pr.md} +61 -6
  48. package/scaffold/pt-br/commands/dw-help.md +248 -0
  49. package/scaffold/pt-br/commands/{refactoring-analysis.md → dw-refactoring-analysis.md} +49 -25
  50. package/scaffold/pt-br/commands/{review-implementation.md → dw-review-implementation.md} +53 -5
  51. package/scaffold/pt-br/commands/{run-plan.md → dw-run-plan.md} +100 -12
  52. package/scaffold/pt-br/commands/{run-qa.md → dw-run-qa.md} +93 -18
  53. package/scaffold/pt-br/commands/{run-task.md → dw-run-task.md} +35 -10
  54. package/scaffold/pt-br/references/playwright-patterns.md +133 -0
  55. package/scaffold/pt-br/references/refactoring-catalog.md +166 -0
  56. package/scaffold/pt-br/templates/brainstorm-matrix.md +44 -0
  57. package/scaffold/pt-br/templates/functional-doc/case-matrix.md +5 -0
  58. package/scaffold/pt-br/templates/functional-doc/e2e-runbook.md +3 -0
  59. package/scaffold/pt-br/templates/functional-doc/features.md +3 -0
  60. package/scaffold/pt-br/templates/functional-doc/overview.md +21 -0
  61. package/scaffold/pt-br/templates/functional-doc/playwright.spec.ts.tpl +19 -0
  62. package/scaffold/pt-br/templates/pr-bugfix-template.md +28 -0
  63. package/scaffold/pt-br/templates/qa-test-credentials.md +37 -0
  64. package/scaffold/pt-br/templates/tasks-template.md +2 -2
  65. package/scaffold/pt-br/templates/techspec-template.md +1 -1
  66. package/scaffold/rules-readme.md +3 -3
  67. package/scaffold/scripts/functional-doc/generate-dossier.mjs +821 -0
  68. package/scaffold/scripts/functional-doc/run-playwright-flow.mjs +275 -0
  69. package/scaffold/skills/agent-browser/SKILL.md +750 -0
  70. package/scaffold/skills/agent-browser/references/authentication.md +303 -0
  71. package/scaffold/skills/agent-browser/references/commands.md +295 -0
  72. package/scaffold/skills/agent-browser/references/profiling.md +120 -0
  73. package/scaffold/skills/agent-browser/references/proxy-support.md +194 -0
  74. package/scaffold/skills/agent-browser/references/session-management.md +193 -0
  75. package/scaffold/skills/agent-browser/references/snapshot-refs.md +219 -0
  76. package/scaffold/skills/agent-browser/references/video-recording.md +173 -0
  77. package/scaffold/skills/agent-browser/templates/authenticated-session.sh +105 -0
  78. package/scaffold/skills/agent-browser/templates/capture-workflow.sh +69 -0
  79. package/scaffold/skills/agent-browser/templates/form-automation.sh +62 -0
  80. package/scaffold/skills/humanizer/README.md +143 -0
  81. package/scaffold/skills/humanizer/SKILL.md +488 -0
  82. package/scaffold/skills/humanizer/WARP.md +53 -0
  83. package/scaffold/skills/remotion-best-practices/SKILL.md +61 -0
  84. package/scaffold/skills/remotion-best-practices/rules/3d.md +86 -0
  85. package/scaffold/skills/remotion-best-practices/rules/animations.md +27 -0
  86. package/scaffold/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  87. package/scaffold/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  88. package/scaffold/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
  89. package/scaffold/skills/remotion-best-practices/rules/assets.md +78 -0
  90. package/scaffold/skills/remotion-best-practices/rules/audio-visualization.md +198 -0
  91. package/scaffold/skills/remotion-best-practices/rules/audio.md +169 -0
  92. package/scaffold/skills/remotion-best-practices/rules/calculate-metadata.md +134 -0
  93. package/scaffold/skills/remotion-best-practices/rules/can-decode.md +75 -0
  94. package/scaffold/skills/remotion-best-practices/rules/charts.md +120 -0
  95. package/scaffold/skills/remotion-best-practices/rules/compositions.md +154 -0
  96. package/scaffold/skills/remotion-best-practices/rules/display-captions.md +184 -0
  97. package/scaffold/skills/remotion-best-practices/rules/extract-frames.md +229 -0
  98. package/scaffold/skills/remotion-best-practices/rules/ffmpeg.md +38 -0
  99. package/scaffold/skills/remotion-best-practices/rules/fonts.md +152 -0
  100. package/scaffold/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
  101. package/scaffold/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  102. package/scaffold/skills/remotion-best-practices/rules/get-video-duration.md +60 -0
  103. package/scaffold/skills/remotion-best-practices/rules/gifs.md +141 -0
  104. package/scaffold/skills/remotion-best-practices/rules/images.md +134 -0
  105. package/scaffold/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
  106. package/scaffold/skills/remotion-best-practices/rules/light-leaks.md +73 -0
  107. package/scaffold/skills/remotion-best-practices/rules/lottie.md +70 -0
  108. package/scaffold/skills/remotion-best-practices/rules/maps.md +412 -0
  109. package/scaffold/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
  110. package/scaffold/skills/remotion-best-practices/rules/measuring-text.md +140 -0
  111. package/scaffold/skills/remotion-best-practices/rules/parameters.md +109 -0
  112. package/scaffold/skills/remotion-best-practices/rules/sequencing.md +118 -0
  113. package/scaffold/skills/remotion-best-practices/rules/sfx.md +26 -0
  114. package/scaffold/skills/remotion-best-practices/rules/subtitles.md +36 -0
  115. package/scaffold/skills/remotion-best-practices/rules/tailwind.md +11 -0
  116. package/scaffold/skills/remotion-best-practices/rules/text-animations.md +20 -0
  117. package/scaffold/skills/remotion-best-practices/rules/timing.md +179 -0
  118. package/scaffold/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
  119. package/scaffold/skills/remotion-best-practices/rules/transitions.md +197 -0
  120. package/scaffold/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
  121. package/scaffold/skills/remotion-best-practices/rules/trimming.md +51 -0
  122. package/scaffold/skills/remotion-best-practices/rules/videos.md +171 -0
  123. package/scaffold/skills/remotion-best-practices/rules/voiceover.md +99 -0
  124. package/scaffold/skills/security-review/LICENSE +22 -0
  125. package/scaffold/skills/security-review/SKILL.md +312 -0
  126. package/scaffold/skills/security-review/infrastructure/docker.md +432 -0
  127. package/scaffold/skills/security-review/languages/javascript.md +388 -0
  128. package/scaffold/skills/security-review/languages/python.md +363 -0
  129. package/scaffold/skills/security-review/references/api-security.md +519 -0
  130. package/scaffold/skills/security-review/references/authentication.md +353 -0
  131. package/scaffold/skills/security-review/references/authorization.md +372 -0
  132. package/scaffold/skills/security-review/references/business-logic.md +443 -0
  133. package/scaffold/skills/security-review/references/cryptography.md +329 -0
  134. package/scaffold/skills/security-review/references/csrf.md +398 -0
  135. package/scaffold/skills/security-review/references/data-protection.md +378 -0
  136. package/scaffold/skills/security-review/references/deserialization.md +410 -0
  137. package/scaffold/skills/security-review/references/error-handling.md +436 -0
  138. package/scaffold/skills/security-review/references/file-security.md +457 -0
  139. package/scaffold/skills/security-review/references/injection.md +259 -0
  140. package/scaffold/skills/security-review/references/logging.md +433 -0
  141. package/scaffold/skills/security-review/references/misconfiguration.md +435 -0
  142. package/scaffold/skills/security-review/references/modern-threats.md +475 -0
  143. package/scaffold/skills/security-review/references/ssrf.md +415 -0
  144. package/scaffold/skills/security-review/references/supply-chain.md +405 -0
  145. package/scaffold/skills/security-review/references/xss.md +336 -0
  146. package/scaffold/skills/vercel-react-best-practices/AGENTS.md +3648 -0
  147. package/scaffold/skills/vercel-react-best-practices/README.md +123 -0
  148. package/scaffold/skills/vercel-react-best-practices/SKILL.md +146 -0
  149. package/scaffold/skills/vercel-react-best-practices/rules/_sections.md +46 -0
  150. package/scaffold/skills/vercel-react-best-practices/rules/_template.md +28 -0
  151. package/scaffold/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  152. package/scaffold/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  153. package/scaffold/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  154. package/scaffold/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  155. package/scaffold/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
  156. package/scaffold/skills/vercel-react-best-practices/rules/async-defer-await.md +82 -0
  157. package/scaffold/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  158. package/scaffold/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  159. package/scaffold/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  160. package/scaffold/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
  161. package/scaffold/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  162. package/scaffold/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  163. package/scaffold/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  164. package/scaffold/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  165. package/scaffold/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  166. package/scaffold/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  167. package/scaffold/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  168. package/scaffold/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  169. package/scaffold/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  170. package/scaffold/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  171. package/scaffold/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  172. package/scaffold/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  173. package/scaffold/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  174. package/scaffold/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  175. package/scaffold/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
  176. package/scaffold/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  177. package/scaffold/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  178. package/scaffold/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  179. package/scaffold/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  180. package/scaffold/skills/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
  181. package/scaffold/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  182. package/scaffold/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  183. package/scaffold/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  184. package/scaffold/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  185. package/scaffold/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  186. package/scaffold/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  187. package/scaffold/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  188. package/scaffold/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  189. package/scaffold/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  190. package/scaffold/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
  191. package/scaffold/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
  192. package/scaffold/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  193. package/scaffold/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  194. package/scaffold/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  195. package/scaffold/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  196. package/scaffold/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  197. package/scaffold/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  198. package/scaffold/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  199. package/scaffold/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  200. package/scaffold/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  201. package/scaffold/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  202. package/scaffold/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  203. package/scaffold/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
  204. package/scaffold/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  205. package/scaffold/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  206. package/scaffold/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  207. package/scaffold/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  208. package/scaffold/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  209. package/scaffold/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  210. package/scaffold/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  211. package/scaffold/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  212. package/scaffold/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  213. package/scaffold/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  214. package/scaffold/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
  215. package/scaffold/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  216. package/scaffold/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
  217. package/scaffold/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  218. package/scaffold/skills/webapp-testing/SKILL.md +133 -0
  219. package/scaffold/skills/webapp-testing/assets/test-helper.js +56 -0
  220. package/scaffold/en/commands/help.md +0 -289
  221. package/scaffold/pt-br/commands/help.md +0 -226
@@ -5,11 +5,27 @@ Você é um assistente IA especializado em correção de bugs pós-QA com retest
5
5
  <critical>Use Playwright MCP para retestar os fluxos corrigidos</critical>
6
6
  <critical>Atualize os artefatos dentro de {{PRD_PATH}}/QA/ a cada ciclo</critical>
7
7
 
8
+ ## Quando Usar
9
+ - Use para corrigir bugs identificados durante testes de QA com reteste iterativo até estabilizar
10
+ - NÃO use para corrigir um bug de report de usuário (use `/dw-bugfix` em vez disso)
11
+ - NÃO use para rodar testes de QA (use `/dw-run-qa` em vez disso)
12
+
13
+ ## Posição no Pipeline
14
+ **Antecessor:** `/dw-run-qa` | **Sucessor:** `/dw-commit` e depois `/dw-generate-pr`
15
+
16
+ ## Skills Complementares
17
+
18
+ Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como suporte operacional sem substituir este comando:
19
+
20
+ - `agent-browser`: suporte para reproduzir bugs com sessões persistentes, capturar dados de rede, screenshots adicionais e validar correções browser-first
21
+ - `webapp-testing`: suporte para estruturar retestes, capturas e scripts quando complementar ao Playwright MCP
22
+ - `vercel-react-best-practices`: use apenas se a correção afetar frontend React/Next.js e houver risco de regressão de renderização, hidratação, fetching ou performance
23
+
8
24
  ## Variáveis de Entrada
9
25
 
10
26
  | Variável | Descrição | Exemplo |
11
27
  |----------|-----------|---------|
12
- | `{{PRD_PATH}}` | Caminho da pasta do PRD | `ai/spec/prd-minha-feature` |
28
+ | `{{PRD_PATH}}` | Caminho da pasta do PRD | `.dw/spec/prd-minha-feature` |
13
29
 
14
30
  ## Objetivo
15
31
 
@@ -25,6 +41,7 @@ Executar ciclo iterativo de:
25
41
  - PRD: `{{PRD_PATH}}/prd.md`
26
42
  - TechSpec: `{{PRD_PATH}}/techspec.md`
27
43
  - Tasks: `{{PRD_PATH}}/tasks.md`
44
+ - Credenciais de Teste QA: `.dw/templates/qa-test-credentials.md`
28
45
  - Bugs: `{{PRD_PATH}}/QA/bugs.md`
29
46
  - Relatório QA: `{{PRD_PATH}}/QA/qa-report.md`
30
47
  - Evidências: `{{PRD_PATH}}/QA/screenshots/`
@@ -33,11 +50,21 @@ Executar ciclo iterativo de:
33
50
 
34
51
  ## Fluxo Obrigatório
35
52
 
53
+ ### Definições de Severidade
54
+
55
+ | Severidade | Critério | Exemplo |
56
+ |------------|----------|---------|
57
+ | Crítica | Crash do app, perda de dados, vulnerabilidade de segurança | TypeError ao salvar, XSS em input |
58
+ | Alta | Fluxo principal quebrado, funcionalidade bloqueante | Botão de login não funcional |
59
+ | Média | Feature degradada mas existe workaround | Ordenação não funciona na tabela |
60
+ | Baixa | Problema visual menor, cosmético | Alinhamento de botão deslocado 2px |
61
+
36
62
  ### 1. Triagem dos Bugs em Aberto
37
63
 
38
64
  - Ler `QA/bugs.md` e listar bugs com `Status: Aberto`
39
65
  - Priorizar por severidade: Crítica > Alta > Média > Baixa
40
66
  - Mapear cada bug ao requisito (RF) e ao arquivo/camada afetada
67
+ - Ler `.dw/templates/qa-test-credentials.md` e selecionar credenciais compatíveis com o bug (admin, perfil restrito, multi-tenant, etc.)
41
68
 
42
69
  ### 2. Implementação das Correções
43
70
 
@@ -59,6 +86,8 @@ Para cada bug corrigido:
59
86
  6. Coletar logs:
60
87
  - `QA/logs/console-retest.log`
61
88
  - `QA/logs/network-retest.log`
89
+ 7. Registrar no relatório de QA qual usuário/perfil foi usado no reteste
90
+ 8. Se o reteste exigir auth persistente, inspeção além do MCP, ou reprodução mais fiel em navegador real, complementar com `agent-browser` e registrar no relatório
62
91
 
63
92
  ### 4. Atualização de Artefatos
64
93
 
@@ -0,0 +1,276 @@
1
+ <system_instructions>
2
+ Você é um assistente especializado em mapear funcionalidades reais de telas, fluxos e módulos a partir de codebase, documentação markdown do projeto e validação em browser com Playwright.
3
+
4
+ ## Quando Usar
5
+ - Use para mapear telas, fluxos ou módulos em um dossiê funcional abrangente com cobertura de testes E2E e tours em vídeo opcionais
6
+ - NÃO use quando apenas executar testes QA contra requisitos existentes (use `/dw-run-qa`)
7
+ - NÃO use quando o projeto ainda não foi configurado
8
+
9
+ ## Posição no Pipeline
10
+ **Antecessor:** `/dw-analyze-project` (recomendado) | **Sucessor:** (documentação independente)
11
+
12
+ Funciona melhor com projeto analisado por `/dw-analyze-project`
13
+
14
+ ## Requisitos Críticos
15
+
16
+ ### Requisitos Gerais
17
+ <critical>Este comando é genérico para qualquer projeto do workspace. Não assuma um framework específico, uma URL fixa ou uma estrutura única de pastas.</critical>
18
+ <critical>Toda funcionalidade identificada deve ser coberta com happy path, edge cases, casos de erro e mensagens ao usuário quando aplicável.</critical>
19
+ <critical>Nenhuma entrega pode ser considerada completa se houver apenas fluxo feliz documentado.</critical>
20
+
21
+ ### Requisitos de Playwright e Execução
22
+ <critical>Utilize o Playwright MCP como mecanismo primário para execução E2E e validação interativa em browser.</critical>
23
+ <critical>Quando houver Playwright disponível no projeto-alvo, gere script E2E e tente executar o fluxo com captura de evidências.</critical>
24
+ <critical>Se algum caso não puder ser executado por ambiente, permissão, seed ou ausência de runner, registre como BLOQUEADO com justificativa explícita.</critical>
25
+
26
+ ### Requisitos de Vídeo
27
+ <critical>Quando a solicitação pedir vídeo, a entrega exigida é um vídeo consumível por humanos, em formato de tour funcional guiado, com ritmo legível, foco nas telas relevantes e legenda sincronizada. Captura bruta do Playwright sozinha não atende esse requisito.</critical>
28
+ <critical>Se o ambiente só permitir gravação bruta e não houver como produzir um tour humano final no turno atual, registre o vídeo humano como BLOQUEADO explicitamente no manifesto e diferencie "gravação bruta" de "vídeo final".</critical>
29
+ <critical>Se o pedido mencionar vídeo para humanos, o padrão preferencial é gravar a navegação real com Playwright no próprio sistema, e não montar slideshow de screenshots, salvo se o usuário pedir o contrário ou houver bloqueio técnico explícito.</critical>
30
+ <critical>Vídeo humano guiado não pode ter cadência apressada. Cada transição deve dar tempo para a pessoa ler o contexto, localizar a área alterada e entender o desfecho antes da próxima ação.</critical>
31
+ <critical>Para vídeo humano guiado, respeite a resolução pedida pelo usuário via instrução explícita ou `{{VIDEO_RESOLUTION}}`. Se não houver pedido explícito, use `fullhd` como padrão, equivalente a `1920x1080`. Sempre documente a resolução efetiva no manifesto.</critical>
32
+ <critical>Quando `ffmpeg` estiver instalado no ambiente, converter o vídeo humano final para `mp4` como artefato de entrega padrão. Manter o arquivo bruto original quando útil, mas não deixar de gerar `mp4`.</critical>
33
+ <critical>O vídeo humano deve aprofundar as funcionalidades relevantes. Não basta abrir telas, abrir modais ou iniciar formulários e encerrar logo em seguida. Sempre que o ambiente permitir, mostre o fluxo completo até o resultado final observável.</critical>
34
+ <critical>O vídeo humano deve funcionar como tutorial operacional do módulo ou fluxo coberto. Portanto, precisa demonstrar exaustivamente todos os happy paths, edge cases e casos de erro aplicáveis às funcionalidades relevantes. Não trate isso como amostragem, highlights ou seleção representativa. Se algum caso aplicável não puder ser gravado, registrar bloqueio explícito no manifesto e na documentação.</critical>
35
+
36
+ ### Requisitos de Composição e Layout do Vídeo
37
+ <critical>Header e footer de vídeos humanos não podem disputar área útil com a tela do browser. Quando eles existirem, devem ficar fora do stage do browser, em uma composição maior, preservando intacta a viewport real da aplicação.</critical>
38
+ <critical>Quando o objetivo for um tour humano com browser centralizado, mantenha a aplicação em um palco central sem colunas laterais fixas, preservando header e footer em largura total fora da área do browser.</critical>
39
+ <critical>Qualidade visual do browser é requisito obrigatório. Não entregue tour humano com viewport ou gravação reescalada para baixo em relação à resolução final. O runner deve alinhar viewport e captura de vídeo à resolução final ou registrar bloqueio explícito.</critical>
40
+
41
+ ### Requisitos de Cadência do Vídeo
42
+ <critical>Antes e depois de ações principais, inserir pausas intencionais. Como regra operacional: manter de 2 a 3 segundos de permanência em estados relevantes já carregados e pelo menos 1,5 segundo após o desfecho visível de cada ação principal antes de seguir.</critical>
43
+ <critical>Evite sequências em que vários cliques ou preenchimentos ocorram sem tempo de assimilação. Quando o usuário humano precisar comparar campos, badges, mensagens, resultados de busca, validações ou diferenças entre estados, alongue a permanência em tela.</critical>
44
+
45
+ ### Requisitos de Completude
46
+ <critical>Todas as legendas (.srt), captions, textos descritivos em markdowns e qualquer redação voltada a leitura humana DEVEM passar pela skill `humanizer` antes da entrega final. Texto com marcas de escrita artificial (linguagem promocional, vocabulário inflado, voz passiva excessiva, paralelismos negativos, filler phrases) invalida a entrega.</critical>
47
+
48
+ ## Skills complementares
49
+
50
+ Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como apoio operacional, sem substituir este comando como fonte de verdade:
51
+
52
+ - `agent-browser`: apoio para navegação real, inspeção de requests, screenshots, auth persistente e reprodução browser-first
53
+ - `webapp-testing`: apoio para estruturar fluxos E2E, retestes locais e coleta de evidências
54
+ - `remotion-best-practices`: apoio obrigatório quando houver vídeo humano final, legendas, composição, transições, FFmpeg ou Remotion
55
+ - `humanizer`: apoio obrigatório para revisar e naturalizar todas as legendas, captions `.srt`, textos descritivos e qualquer redação voltada a leitura humana antes da entrega final
56
+
57
+ ## Ferramentas obrigatórias para browser
58
+
59
+ - Priorizar o Playwright MCP para:
60
+ - navegação
61
+ - autenticação
62
+ - cliques e preenchimento de formulários
63
+ - snapshots acessíveis
64
+ - screenshots
65
+ - inspeção de console
66
+ - inspeção de requests
67
+ - Se existir runner Playwright no projeto, ele pode ser usado como complemento para gerar artefatos reproduzíveis, mas não substitui a validação operacional via MCP.
68
+ - Se houver divergência entre runner headless e comportamento observado no MCP, registrar explicitamente essa divergência no `manifest.json` e considerar o MCP como fonte primária de evidência operacional do browser.
69
+
70
+ ## Variáveis de entrada
71
+
72
+ | Variável | Descrição | Exemplo |
73
+ |----------|-----------|---------|
74
+ | `{{TARGET}}` | URL, rota, fluxo ou módulo alvo | `http://localhost:4000/governanca/agenda` |
75
+ | `{{TARGET_TYPE}}` | Tipo do alvo | `url`, `route`, `screen`, `flow`, `module` |
76
+ | `{{PROJECT}}` | Projeto do workspace, se conhecido | `meu-app/web` |
77
+ | `{{BASE_URL}}` | Base URL opcional para execução | `http://localhost:4000` |
78
+ | `{{VIDEO_RESOLUTION}}` | Resolução desejada para vídeo humano guiado | `fullhd`, `1920x1080`, `1600x900` |
79
+
80
+ ## Fonte de credenciais para execução
81
+
82
+ - Quando o fluxo exigir autenticação, usar `.dw/templates/qa-test-credentials.md` como fonte oficial de credenciais.
83
+ - Herdar a mesma regra operacional de `run-qa`: registrar no manifesto e no roteiro qual usuário/perfil/contexto foi usado.
84
+ - Se a primeira senha falhar, seguir a ordem de fallback documentada em `.dw/templates/qa-test-credentials.md` antes de marcar bloqueio de autenticação.
85
+ - Consulte `.dw/references/playwright-patterns.md` para padrões comuns de teste
86
+
87
+ ## Objetivos
88
+
89
+ 1. Detectar automaticamente o projeto-alvo no workspace.
90
+ 2. Mapear páginas, componentes, serviços, docs e testes relacionados.
91
+ 3. Gerar dossiê funcional detalhado com cobertura obrigatória de casos.
92
+ 4. Gerar ou atualizar roteiro E2E Playwright.
93
+ 5. Executar o fluxo quando houver runner disponível.
94
+ 6. Salvar evidências, vídeo e legendas sidecar em uma estrutura padronizada.
95
+ 7. Quando vídeo for solicitado, produzir também um vídeo final orientado a demonstração humana, não apenas artefatos brutos de execução.
96
+ 8. Aplicar a resolução padrão `fullhd` (`1920x1080`) ao vídeo humano quando nenhuma resolução for informada, permitindo override explícito para outros formatos.
97
+ 9. Garantir que o vídeo humano demonstre fluxos completos e não apenas entradas parciais em telas, modais ou formulários.
98
+ 10. Garantir que o vídeo humano exponha todos os happy paths, edge cases e erros observáveis aplicáveis.
99
+ 11. Garantir que o vídeo humano seja utilizável como tutorial, mostrando a execução ponta a ponta de cada caso coberto até seu desfecho observável.
100
+
101
+ ## Estrutura de saída
102
+
103
+ Salvar tudo em `.dw/flows/<projeto>/<slug-do-alvo>/`.
104
+
105
+ Arquivos mínimos:
106
+ - `overview.md`
107
+ - `features.md`
108
+ - `case-matrix.md`
109
+ - `e2e-runbook.md`
110
+ - `manifest.json`
111
+ - `scripts/*.spec.ts`
112
+ - `captions/*.srt`
113
+
114
+ Se houver execução:
115
+ - `evidence/videos/`
116
+ - `evidence/screenshots/`
117
+ - `evidence/logs/`
118
+
119
+ Se houver vídeo humano final:
120
+ - salvar em `evidence/videos/` com nome que diferencie claramente o tour final da captura bruta
121
+ - quando `ffmpeg` estiver disponível, salvar também a versão `mp4` do tour humano final
122
+ - registrar no `manifest.json` quais arquivos são `raw` e quais são `human_final`
123
+
124
+ ## Fluxo obrigatório
125
+
126
+ ### 1. Descoberta do projeto
127
+
128
+ - Resolver o projeto do workspace com base em `{{TARGET}}`, `{{PROJECT}}`, configs locais, `package.json`, rotas e `playwright.config.*`.
129
+ - Descobrir framework, diretório fonte, docs markdown e runner E2E disponível.
130
+ - Se o projeto não puder ser detectado com segurança, parar e explicar o bloqueio.
131
+
132
+ ### 2. Leitura do código e da documentação
133
+
134
+ - Ler arquivos da página/rota alvo.
135
+ - Ler componentes filhos, hooks, serviços/API, constantes e testes relacionados.
136
+ - Ler markdowns e specs do projeto relacionados ao alvo.
137
+ - Distinguir claramente:
138
+ - comportamento implementado no código
139
+ - comportamento documentado
140
+ - comportamento observado em browser
141
+
142
+ ### 3. Modelagem das funcionalidades
143
+
144
+ Para cada funcionalidade identificada, documentar:
145
+ - objetivo
146
+ - pré-condições
147
+ - navegação
148
+ - ações do usuário
149
+ - resultados esperados
150
+ - mensagens de sucesso
151
+ - mensagens de erro
152
+ - estados vazios/loading
153
+ - permissões/bloqueios
154
+
155
+ ### 4. Matriz obrigatória de casos
156
+
157
+ Criar `case-matrix.md` com no mínimo estas colunas:
158
+ - `ID`
159
+ - `Funcionalidade`
160
+ - `Tipo de caso`
161
+ - `Pré-condições`
162
+ - `Ações`
163
+ - `Resultado esperado`
164
+ - `Mensagem esperada`
165
+ - `Status`
166
+ - `Evidência`
167
+
168
+ Tipos de caso obrigatórios quando aplicáveis:
169
+ - `happy-path`
170
+ - `edge-case`
171
+ - `error`
172
+ - `permission`
173
+
174
+ Regra obrigatória:
175
+ - nenhuma funcionalidade pode ficar apenas com happy path
176
+ - para cada funcionalidade principal, mapear e cobrir todos os casos aplicáveis em vez de apenas um exemplo por tipo
177
+ - se um tipo de caso não se aplica, justificar explicitamente
178
+
179
+ ### 5. Roteiro operacional
180
+
181
+ Gerar `e2e-runbook.md` no estilo operacional detalhado:
182
+ - o que clicar
183
+ - o que preencher
184
+ - o que deve acontecer
185
+ - que mensagem deve aparecer
186
+ - o que muda em casos alternativos e de erro
187
+
188
+ ### 6. Script Playwright
189
+
190
+ - Se o projeto tiver Playwright configurado, gerar spec em `scripts/`.
191
+ - O script deve cobrir pelo menos:
192
+ - navegação principal
193
+ - todos os happy paths aplicáveis às funcionalidades cobertas
194
+ - todos os edge cases aplicáveis e observáveis no ambiente
195
+ - todos os erros, validações e bloqueios relevantes observáveis no ambiente
196
+ - captura de evidências
197
+ - Se não houver Playwright, gerar o script proposto e marcar a execução como bloqueada.
198
+ - Mesmo quando houver spec gerada, validar primeiro o fluxo no Playwright MCP antes de concluir que a execução está aprovada ou bloqueada.
199
+
200
+ ### 7. Execução e evidências
201
+
202
+ - Executar o fluxo no Playwright MCP como etapa primária de evidência.
203
+ - Executar o spec do projeto quando o runner estiver disponível e o ambiente permitir, como artefato complementar e reproduzível.
204
+ - Antes da execução autenticada, consultar `.dw/templates/qa-test-credentials.md` e escolher o usuário mais adequado ao fluxo.
205
+ - Registrar no `manifest.json`:
206
+ - arquivo fonte das credenciais
207
+ - login utilizado
208
+ - perfil/escopo esperado
209
+ - contexto selecionado
210
+ - Capturar vídeo, screenshots e logs.
211
+ - Gerar legenda sidecar `.srt` a partir do roteiro e da ordem dos passos executados.
212
+ - Se a solicitação incluir vídeo, transformar a execução em um tour legível para humanos:
213
+ - consultar `remotion-best-practices` ao produzir composição final, legendas, animações, tratamento de áudio ou FFmpeg
214
+ - preferir gravação ao vivo da navegação real
215
+ - usar `fullhd` (`1920x1080`) por padrão quando a resolução não for informada
216
+ - aceitar override explícito por parâmetro, incluindo resoluções como `1600x900`
217
+ - priorizar completude funcional sobre duração curta; o vídeo pode ser mais longo se isso for necessário para demonstrar o comportamento de ponta a ponta
218
+ - sem trechos longos de espera ou hesitação operacional
219
+ - com cadência deliberadamente legível para operação humana, evitando transições rápidas demais entre estados
220
+ - com foco visual nas interações relevantes
221
+ - com ordem narrativa coerente entre telas
222
+ - com legenda compatível com o que está visível no vídeo final
223
+ - usar scroll intencional para revelar telas longas quando necessário
224
+ - quando houver título e legenda, reservar cabeçalho e rodapé próprios fora do stage do browser
225
+ - quando a composição pedir browser centralizado, manter a aplicação em um palco central sem colunas laterais fixas e sem sacrificar a largura total do cabeçalho e do rodapé
226
+ - evitar qualquer redução artificial da viewport do app para encaixar overlays
227
+ - alinhar a captura de vídeo à resolução final para evitar perda de nitidez no browser
228
+ - manter em tela cada estado relevante por tempo suficiente para leitura visual, em especial listas, diálogos, badges, validações, mensagens e resultados finais
229
+ - manter as legendas tempo suficiente para leitura confortável, sem trocar texto antes de a etapa correspondente ser compreendida visualmente
230
+ - antes de executar uma ação principal, estabilizar a tela e a legenda; após o resultado, segurar a cena o bastante para leitura do desfecho
231
+ - quando `ffmpeg` estiver disponível, materializar uma versão `mp4` do vídeo humano final com compatibilidade ampla de reprodução
232
+ - mostrar o desfecho do fluxo sempre que iniciar uma ação principal, incluindo sucesso, bloqueio, validação ou erro observado
233
+ - evitar tours superficiais em que o agente apenas abre e fecha telas, modais ou formulários
234
+ - incluir no tour, quando aplicável, todos os casos visíveis de `happy-path`, `edge-case` e `erro` das funcionalidades cobertas, sem limitar a demonstração a um único caso por categoria
235
+ - tratar o vídeo como tutorial: cada funcionalidade principal deve ser demonstrada até o fim em todos os cenários aplicáveis, mesmo que isso aumente a duração total
236
+ - evitar resumos em que se abre um formulário, um modal ou uma tela e se encerra antes de mostrar cada desfecho relevante
237
+
238
+ ## Padrão de cadência para vídeo humano
239
+
240
+ Quando produzir ou revisar o tour final, aplicar estas regras como baseline:
241
+
242
+ - usar pausas explícitas entre blocos narrativos, não apenas entre navegações técnicas
243
+ - preferir permanência de 2 a 3 segundos em estados estáveis que precisam ser lidos
244
+ - após sucesso, erro, validação, modal aberto, tabela filtrada ou etapa concluída, segurar pelo menos 1,5 segundo antes da próxima interação
245
+ - em formulários densos, reduzir a velocidade percebida: preencher, estabilizar, então prosseguir
246
+ - quando houver comparação entre estado anterior e posterior, mostrar claramente os dois momentos
247
+ - se a gravação ficar rápida demais para leitura humana, considerar a execução inadequada mesmo que tecnicamente correta
248
+ - se `ffmpeg` estiver instalado, considerar incompleta a entrega que deixar apenas `webm` ou outro bruto sem gerar `mp4`
249
+ - Atualizar `manifest.json` com status final, artefatos e bloqueios, distinguindo:
250
+ - evidências MCP
251
+ - captura bruta de execução
252
+ - vídeo final para humanos
253
+ - legendas
254
+
255
+ ## Scripts utilitários
256
+
257
+ Use os utilitários do workspace quando fizer sentido:
258
+ - `node .dw/scripts/dw-functional-doc/generate-dossier.mjs --target <URL> [--lang en|pt-br] [--project <nome>] [--base-url <url>]`
259
+ - `node .dw/scripts/dw-functional-doc/run-playwright-flow.mjs --flow-dir <caminho> [--browser-name chromium|firefox] [--video-resolution fullhd|1920x1080]`
260
+
261
+ ## Critérios de completude
262
+
263
+ - [ ] Projeto detectado corretamente
264
+ - [ ] Código e markdowns relacionados analisados
265
+ - [ ] `overview.md` gerado
266
+ - [ ] `features.md` gerado
267
+ - [ ] `case-matrix.md` gerado com happy path, edge cases, erros e mensagens
268
+ - [ ] `e2e-runbook.md` gerado
269
+ - [ ] spec Playwright gerada
270
+ - [ ] legenda `.srt` gerada
271
+ - [ ] legendas, captions e textos descritivos revisados com skill `humanizer`
272
+ - [ ] vídeo final para humanos gerado quando solicitado
273
+ - [ ] `manifest.json` atualizado
274
+ - [ ] casos não executados marcados como `BLOCKED` com justificativa
275
+
276
+ </system_instructions>
@@ -1,15 +1,23 @@
1
1
  <system_instructions>
2
2
  Você é um assistente especializado em criar Pull Requests bem documentados. Sua tarefa é gerar uma PR no GitHub com um resumo estruturado de todas as mudanças implementadas.
3
3
 
4
+ ## Quando Usar
5
+ - Use para criar um Pull Request de uma branch de feature ou bugfix para main/develop
6
+ - NÃO use quando as alterações ainda não foram commitadas (use `/dw-commit` primeiro)
7
+ - NÃO use quando o code review ainda não foi feito (use `/dw-code-review` primeiro)
8
+
9
+ ## Posição no Pipeline
10
+ **Antecessor:** `/dw-code-review` ou `/dw-commit` | **Sucessor:** (merge)
11
+
4
12
  ## Uso
5
13
 
6
14
  ```
7
- /gerar-pr [branch-alvo]
15
+ /dw-generate-pr [branch-alvo]
8
16
  ```
9
17
 
10
18
  Exemplos:
11
- - `/gerar-pr main`
12
- - `/gerar-pr develop`
19
+ - `/dw-generate-pr main`
20
+ - `/dw-generate-pr develop`
13
21
 
14
22
  ## Objetivo
15
23
 
@@ -43,6 +51,11 @@
43
51
  git push origin [nome-da-branch]
44
52
  ```
45
53
 
54
+ ### Detecção de Tipo de Branch
55
+ - Se `feat/prd-*`: Ler `.dw/spec/prd-*/prd.md` para resumo da feature
56
+ - Se `fix/*`: Usar mensagens de commit como resumo, referenciar bug report
57
+ - Caso contrário: Usar mensagens de commit
58
+
46
59
  ### 3. Coletar Informações
47
60
 
48
61
  - Ler o PRD para resumo da feature
@@ -55,6 +68,12 @@
55
68
 
56
69
  # Arquivos modificados
57
70
  git diff --name-only [branch-alvo]..HEAD
71
+
72
+ # Agrupar por projeto/módulo
73
+ git diff --name-only [branch-alvo]..HEAD | head -20
74
+
75
+ # Rodar testes
76
+ pnpm test
58
77
  ```
59
78
 
60
79
  ### 4. Gerar Body da PR
@@ -112,13 +131,15 @@
112
131
 
113
132
  ## Related
114
133
 
115
- - PRD: `ai/spec/prd-[nome]/prd.md`
116
- - TechSpec: `ai/spec/prd-[nome]/techspec.md`
134
+ - PRD: `.dw/spec/prd-[nome]/prd.md`
135
+ - TechSpec: `.dw/spec/prd-[nome]/techspec.md`
117
136
 
118
137
  ---
119
138
  Generated with AI CLI
120
139
  ```
121
140
 
141
+ Para PRs de bugfix, use o template de bugfix PR em `.dw/templates/pr-bugfix-template.md`.
142
+
122
143
  ## Regras
123
144
 
124
145
  1. **Sempre verificar status** antes de criar PR
@@ -140,6 +161,10 @@
140
161
  ### Push
141
162
  Push realizado: git push origin [nome-da-branch]
142
163
 
164
+ ### Projetos Impactados
165
+ - [projeto-1]: [X] arquivos
166
+ - [projeto-2]: [Y] arquivos
167
+
143
168
  ### Commits Incluídos
144
169
  1. feat([module]): [descrição]
145
170
  2. feat([module]): [descrição]
@@ -148,7 +173,7 @@
148
173
  Body da PR copiado para clipboard
149
174
 
150
175
  ### URL
151
- Abrindo: https://github.com/[org]/[repo]/compare/...
176
+ Abrindo: https://github.com/[org]/[repo]/compare/[branch-alvo]...[nome-da-branch]?expand=1
152
177
 
153
178
  ### Próximos Passos
154
179
  1. URL aberta no navegador
@@ -158,5 +183,35 @@
158
183
  5. Aguardar code review
159
184
  ```
160
185
 
186
+ ## Solução de Problemas
187
+
188
+ ### xclip/xsel não instalado
189
+ ```bash
190
+ # Ubuntu/Debian
191
+ sudo apt install xclip
192
+ # ou
193
+ sudo apt install xsel
194
+ ```
195
+
196
+ ### Branch não existe no remote
197
+ ```bash
198
+ git push -u origin [nome-da-branch]
199
+ ```
200
+
201
+ ### Conflitos com branch alvo
202
+ ```bash
203
+ git fetch origin [branch-alvo]
204
+ git rebase origin/[branch-alvo]
205
+ # Resolver conflitos se houver
206
+ git push origin [nome-da-branch] --force-with-lease
207
+ ```
208
+
209
+ ### Navegador não abre (WSL)
210
+ ```bash
211
+ # Configurar navegador padrão no WSL
212
+ export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"
213
+ # Ou copiar a URL e abrir manualmente
214
+ ```
215
+
161
216
  <critical>Sempre copie o body para o clipboard ANTES de abrir a URL</critical>
162
217
  </system_instructions>