@brunosps00/dev-workflow 0.15.0 → 1.0.0

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 (135) hide show
  1. package/README.md +97 -119
  2. package/lib/constants.js +16 -36
  3. package/lib/migrate-skills.js +11 -4
  4. package/lib/removed-commands.js +30 -0
  5. package/package.json +1 -1
  6. package/scaffold/en/agent-instructions.md +27 -16
  7. package/scaffold/en/commands/dw-adr.md +2 -2
  8. package/scaffold/en/commands/dw-analyze-project.md +7 -7
  9. package/scaffold/en/commands/dw-autopilot.md +20 -20
  10. package/scaffold/en/commands/dw-brainstorm.md +160 -9
  11. package/scaffold/en/commands/dw-bugfix.md +5 -5
  12. package/scaffold/en/commands/dw-commit.md +1 -1
  13. package/scaffold/en/commands/dw-dockerize.md +9 -9
  14. package/scaffold/en/commands/dw-find-skills.md +4 -4
  15. package/scaffold/en/commands/dw-functional-doc.md +1 -1
  16. package/scaffold/en/commands/dw-generate-pr.md +4 -4
  17. package/scaffold/en/commands/dw-help.md +95 -351
  18. package/scaffold/en/commands/dw-intel.md +76 -12
  19. package/scaffold/en/commands/dw-new-project.md +9 -9
  20. package/scaffold/en/commands/dw-plan.md +175 -0
  21. package/scaffold/en/commands/dw-qa.md +166 -0
  22. package/scaffold/en/commands/dw-redesign-ui.md +6 -6
  23. package/scaffold/en/commands/dw-review.md +198 -0
  24. package/scaffold/en/commands/dw-run.md +176 -0
  25. package/scaffold/en/commands/dw-secure-audit.md +222 -0
  26. package/scaffold/en/commands/dw-update.md +1 -1
  27. package/scaffold/en/references/playwright-patterns.md +1 -1
  28. package/scaffold/en/references/refactoring-catalog.md +1 -1
  29. package/scaffold/en/templates/brainstorm-matrix.md +1 -1
  30. package/scaffold/en/templates/idea-onepager.md +3 -3
  31. package/scaffold/en/templates/project-onepager.md +5 -5
  32. package/scaffold/pt-br/agent-instructions.md +27 -16
  33. package/scaffold/pt-br/commands/dw-adr.md +2 -2
  34. package/scaffold/pt-br/commands/dw-analyze-project.md +7 -7
  35. package/scaffold/pt-br/commands/dw-autopilot.md +20 -20
  36. package/scaffold/pt-br/commands/dw-brainstorm.md +160 -9
  37. package/scaffold/pt-br/commands/dw-bugfix.md +8 -8
  38. package/scaffold/pt-br/commands/dw-commit.md +1 -1
  39. package/scaffold/pt-br/commands/dw-dockerize.md +9 -9
  40. package/scaffold/pt-br/commands/dw-find-skills.md +4 -4
  41. package/scaffold/pt-br/commands/dw-functional-doc.md +1 -1
  42. package/scaffold/pt-br/commands/dw-generate-pr.md +4 -4
  43. package/scaffold/pt-br/commands/dw-help.md +97 -300
  44. package/scaffold/pt-br/commands/dw-intel.md +77 -13
  45. package/scaffold/pt-br/commands/dw-new-project.md +9 -9
  46. package/scaffold/pt-br/commands/dw-plan.md +175 -0
  47. package/scaffold/pt-br/commands/dw-qa.md +166 -0
  48. package/scaffold/pt-br/commands/dw-redesign-ui.md +6 -6
  49. package/scaffold/pt-br/commands/dw-review.md +198 -0
  50. package/scaffold/pt-br/commands/dw-run.md +176 -0
  51. package/scaffold/pt-br/commands/dw-secure-audit.md +222 -0
  52. package/scaffold/pt-br/commands/dw-update.md +1 -1
  53. package/scaffold/pt-br/references/playwright-patterns.md +1 -1
  54. package/scaffold/pt-br/references/refactoring-catalog.md +1 -1
  55. package/scaffold/pt-br/templates/brainstorm-matrix.md +1 -1
  56. package/scaffold/pt-br/templates/idea-onepager.md +3 -3
  57. package/scaffold/pt-br/templates/project-onepager.md +5 -5
  58. package/scaffold/pt-br/templates/tasks-template.md +1 -1
  59. package/scaffold/skills/api-testing-recipes/SKILL.md +6 -6
  60. package/scaffold/skills/api-testing-recipes/references/auth-patterns.md +1 -1
  61. package/scaffold/skills/api-testing-recipes/references/matrix-conventions.md +1 -1
  62. package/scaffold/skills/api-testing-recipes/references/openapi-driven.md +3 -3
  63. package/scaffold/skills/docker-compose-recipes/SKILL.md +1 -1
  64. package/scaffold/skills/dw-codebase-intel/SKILL.md +9 -9
  65. package/scaffold/skills/dw-codebase-intel/agents/intel-updater.md +4 -4
  66. package/scaffold/skills/dw-codebase-intel/references/api-design-discipline.md +1 -1
  67. package/scaffold/skills/dw-codebase-intel/references/incremental-update.md +5 -5
  68. package/scaffold/skills/dw-codebase-intel/references/intel-format.md +1 -1
  69. package/scaffold/skills/dw-codebase-intel/references/query-patterns.md +3 -3
  70. package/scaffold/skills/dw-council/SKILL.md +2 -2
  71. package/scaffold/skills/dw-debug-protocol/SKILL.md +5 -3
  72. package/scaffold/skills/dw-execute-phase/SKILL.md +16 -16
  73. package/scaffold/skills/dw-execute-phase/agents/executor.md +5 -5
  74. package/scaffold/skills/dw-execute-phase/agents/plan-checker.md +4 -4
  75. package/scaffold/skills/dw-execute-phase/references/atomic-commits.md +1 -1
  76. package/scaffold/skills/dw-execute-phase/references/plan-verification.md +2 -2
  77. package/scaffold/skills/dw-execute-phase/references/wave-coordination.md +1 -1
  78. package/scaffold/skills/dw-git-discipline/SKILL.md +5 -2
  79. package/scaffold/skills/dw-incident-response/SKILL.md +5 -1
  80. package/scaffold/skills/dw-llm-eval/SKILL.md +10 -8
  81. package/scaffold/skills/dw-memory/SKILL.md +2 -2
  82. package/scaffold/skills/dw-review-rigor/SKILL.md +5 -5
  83. package/scaffold/skills/dw-simplification/SKILL.md +4 -4
  84. package/scaffold/skills/dw-source-grounding/SKILL.md +1 -1
  85. package/scaffold/skills/dw-testing-discipline/SKILL.md +8 -6
  86. package/scaffold/skills/dw-testing-discipline/references/agent-guardrails.md +3 -3
  87. package/scaffold/skills/dw-testing-discipline/references/anti-patterns.md +2 -2
  88. package/scaffold/skills/dw-testing-discipline/references/core-rules.md +1 -1
  89. package/scaffold/skills/dw-testing-discipline/references/flaky-discipline.md +3 -3
  90. package/scaffold/skills/dw-testing-discipline/references/patterns.md +1 -1
  91. package/scaffold/skills/dw-testing-discipline/references/playwright-recipes.md +1 -1
  92. package/scaffold/skills/dw-ui-discipline/SKILL.md +8 -6
  93. package/scaffold/skills/dw-ui-discipline/references/accessibility-floor.md +2 -2
  94. package/scaffold/skills/dw-ui-discipline/references/hard-gate.md +1 -1
  95. package/scaffold/skills/dw-ui-discipline/references/state-matrix.md +1 -1
  96. package/scaffold/skills/dw-ui-discipline/references/visual-slop.md +2 -2
  97. package/scaffold/skills/dw-verify/SKILL.md +4 -4
  98. package/scaffold/skills/humanizer/SKILL.md +1 -7
  99. package/scaffold/skills/remotion-best-practices/SKILL.md +3 -1
  100. package/scaffold/skills/security-review/SKILL.md +1 -1
  101. package/scaffold/skills/security-review/languages/csharp.md +1 -1
  102. package/scaffold/skills/security-review/languages/rust.md +1 -1
  103. package/scaffold/skills/security-review/languages/typescript.md +1 -1
  104. package/scaffold/skills/vercel-react-best-practices/SKILL.md +3 -1
  105. package/scaffold/templates-overrides-readme.md +3 -3
  106. package/scaffold/en/commands/dw-code-review.md +0 -386
  107. package/scaffold/en/commands/dw-create-prd.md +0 -148
  108. package/scaffold/en/commands/dw-create-tasks.md +0 -201
  109. package/scaffold/en/commands/dw-create-techspec.md +0 -210
  110. package/scaffold/en/commands/dw-deep-research.md +0 -418
  111. package/scaffold/en/commands/dw-deps-audit.md +0 -327
  112. package/scaffold/en/commands/dw-fix-qa.md +0 -152
  113. package/scaffold/en/commands/dw-map-codebase.md +0 -125
  114. package/scaffold/en/commands/dw-refactoring-analysis.md +0 -340
  115. package/scaffold/en/commands/dw-revert-task.md +0 -114
  116. package/scaffold/en/commands/dw-review-implementation.md +0 -349
  117. package/scaffold/en/commands/dw-run-plan.md +0 -300
  118. package/scaffold/en/commands/dw-run-qa.md +0 -497
  119. package/scaffold/en/commands/dw-run-task.md +0 -209
  120. package/scaffold/en/commands/dw-security-check.md +0 -271
  121. package/scaffold/pt-br/commands/dw-code-review.md +0 -366
  122. package/scaffold/pt-br/commands/dw-create-prd.md +0 -148
  123. package/scaffold/pt-br/commands/dw-create-tasks.md +0 -201
  124. package/scaffold/pt-br/commands/dw-create-techspec.md +0 -208
  125. package/scaffold/pt-br/commands/dw-deep-research.md +0 -172
  126. package/scaffold/pt-br/commands/dw-deps-audit.md +0 -327
  127. package/scaffold/pt-br/commands/dw-fix-qa.md +0 -152
  128. package/scaffold/pt-br/commands/dw-map-codebase.md +0 -125
  129. package/scaffold/pt-br/commands/dw-refactoring-analysis.md +0 -340
  130. package/scaffold/pt-br/commands/dw-revert-task.md +0 -114
  131. package/scaffold/pt-br/commands/dw-review-implementation.md +0 -337
  132. package/scaffold/pt-br/commands/dw-run-plan.md +0 -296
  133. package/scaffold/pt-br/commands/dw-run-qa.md +0 -495
  134. package/scaffold/pt-br/commands/dw-run-task.md +0 -208
  135. package/scaffold/pt-br/commands/dw-security-check.md +0 -271
@@ -0,0 +1,176 @@
1
+ <system_instructions>
2
+ Você é o orquestrador de execução de tasks. Dois modos: executar UMA task específica, ou executar TODAS as tasks pendentes em ordem de dependência. Ambos aplicam as mesmas garantias por task (commit atômico, testes obrigatórios, verify antes de commit, deviation handling).
3
+
4
+ ## Quando Usar
5
+ - Use `run` depois que `/dw-plan` produziu `tasks.md` + per-task files e as tasks foram aprovadas.
6
+ - Use para executar uma task específica durante desenvolvimento incremental.
7
+ - NÃO use pra bug fixes — `/dw-bugfix` resolve.
8
+ - NÃO use sem breakdown de tasks aprovado — arquivos de task DEVEM existir.
9
+
10
+ ## Posição no Pipeline
11
+ **Antecessor:** `/dw-plan` (com tasks aprovadas) | **Sucessor:** `/dw-review` então `/dw-commit` + `/dw-generate-pr`
12
+
13
+ ## Modos
14
+
15
+ | Invocação | Comportamento |
16
+ |-----------|---------------|
17
+ | `/dw-run` | **Padrão.** Executa TODAS as tasks pendentes de `tasks.md` em ordem de dependência. Dispatch paralelo em waves para tasks independentes. Commit atômico por task. Após concluir tudo, roda Level 2 review (PRD compliance). |
18
+ | `/dw-run <task-id>` | Executa UMA task específica por ID (ex: `1.0`, `2.3`). Inclui validação Level 1. Commit atômico em sucesso. |
19
+ | `/dw-run --resume` | Resume um plan multi-task interrompido de onde parou. Lê `.dw/spec/<prd>/active-session.md` se presente; senão continua da primeira pending. |
20
+
21
+ ## Entradas
22
+
23
+ | Variável | Descrição | Exemplo |
24
+ |----------|-----------|---------|
25
+ | `{{TASK_ID}}` | ID específico de task (opcional — default todas pending) | `1.0`, `2.3`, `5.1` |
26
+ | `{{PRD_PATH}}` | Caminho do dir PRD com tasks (opcional — auto-detect da branch ativa) | `.dw/spec/prd-invoice-export` |
27
+
28
+ ## Skills Complementares
29
+
30
+ Quando disponíveis em `./.agents/skills/`, estas skills são invocadas por task:
31
+
32
+ - `dw-verify`: **SEMPRE** — antes do commit de cada task, produz Verification Report (test + lint + build GREEN). Sem PASS, sem commit. Iron Law de verificação.
33
+ - `dw-memory`: **SEMPRE** — lê workflow memory no início; atualiza no fim com promotion test (lições que valem pra próxima task são promovidas pra MEMORY.md compartilhada).
34
+ - `dw-execute-phase`: fornece agentes `plan-checker` (verificação goal-backward em 6 dimensões antes do código ser tocado) e `executor` (commit atômico + deviation handling).
35
+ - `dw-testing-discipline`: aplica placement doctrine, 6 agent guardrails e 25 anti-patterns ao adicionar testes.
36
+ - `dw-ui-discipline`: quando task toca UI, as 4 grounding questions precisam ser respondidas antes de qualquer decisão visual.
37
+ - `dw-llm-eval`: quando task toca código de feature AI, regras de reference dataset + oracle ladder se aplicam.
38
+ - `vercel-react-best-practices`: quando task toca performance React/Next.js.
39
+
40
+ ## Constitution Gate
41
+
42
+ <critical>ANTES de executar qualquer task, cheque `.dw/constitution.md`. Se AUSENTE, auto-instale defaults via pattern v0.11. Se PRESENTE, a linha `Constitution Alignment` da task (setada em `/dw-plan` Stage 3) é consultada conforme a task executa — código deve respeitar os princípios declarados.</critical>
43
+
44
+ ## Inteligência do Codebase
45
+
46
+ <critical>Se `.dw/intel/` existir, consulte via `/dw-intel` antes de implementar pra alinhar com padrões existentes.</critical>
47
+ - Per-task: `/dw-intel "padrões para <tópico da task>"` para surfacar convenções relevantes.
48
+
49
+ ## Modo 1: UMA task (`run <task-id>`)
50
+
51
+ ### Pré-requisitos
52
+ - `tasks.md` + per-task files existem em `.dw/spec/<prd>/`.
53
+ - Dependências da task-alvo estão completadas (cheque seção "Depende de" do `task.md`).
54
+
55
+ ### Comportamento
56
+
57
+ 1. **Ler o task file:** `.dw/spec/<prd>/<task-id>_task.md`. Entender inputs, FRs cobertos, critérios de aceitação, subtasks.
58
+ 2. **Plano de implementação:**
59
+ - Liste arquivos a criar/modificar.
60
+ - Identifique testes a adicionar por subtask.
61
+ - Confirme dependências (se faltando, PARE e surface).
62
+ 3. **Implementar:**
63
+ - Siga padrões do projeto de `.dw/rules/` e `.dw/intel/`.
64
+ - Aplique skills complementares (UI gate, test discipline, etc.).
65
+ - Testes unitários obrigatórios para backend/services conforme testspec.
66
+ - Match no framework de testes especificado em `.dw/rules/`.
67
+ 4. **Validar (Level 1):**
68
+ - Rodar comando de teste do projeto.
69
+ - Checar critérios de aceitação do task file.
70
+ - Rodar `dw-verify` para produzir Verification Report (test + lint + build GREEN).
71
+ - Para frontend interativo, também validar comportamento real via recipes Playwright do `dw-testing-discipline` se risco de regressão for relevante.
72
+ 5. **Commit:**
73
+ - Mensagem atômica: `feat(<scope>): <título da task> (#<task-id>)`.
74
+ - Referencie FRs cobertos.
75
+ - Uma task = um commit (exceto se task tem subtask milestones explícitos que ganham commits separados).
76
+ 6. **Atualizar tasks.md:** marcar task como `Done` com SHA do commit.
77
+ 7. **Reportar:** o que foi feito, testes adicionados, o que foi validado.
78
+
79
+ ### CONDIÇÕES DE PARADA
80
+ - Dependências não satisfeitas → perguntar ao usuário como prosseguir.
81
+ - Verification Report FAIL → não commitar; reportar o que está quebrado.
82
+ - Scope creep detectado mid-implementação → PARE e peça pra usuário escopar.
83
+
84
+ ## Modo 2: TODAS as tasks pending (default `run`)
85
+
86
+ ### Pré-requisitos
87
+ - `tasks.md` + per-task files existem com dependências declaradas.
88
+ - `tasks-validation.md` mostra PASS (ou override explícito).
89
+ - Branch criada: `feat/prd-<feature-slug>`.
90
+
91
+ ### Comportamento
92
+
93
+ 1. **Plan check (via agente `dw-execute-phase/plan-checker`):**
94
+ - Verificação goal-backward em 6 dimensões: essas tasks vão de fato entregar o que o PRD promete?
95
+ - Se FAIL em qualquer dimensão, PARE e reporte ao usuário antes de qualquer código ser tocado.
96
+ 2. **Construir grafo de dependência:**
97
+ - Sort topológico das tasks.
98
+ - Identificar tasks independentes que podem rodar em waves paralelas.
99
+ 3. **Dispatch paralelo em waves (via agente `dw-execute-phase/executor`):**
100
+ - Cada wave contém tasks sem dependência inter.
101
+ - Executar waves serialmente; dentro de uma wave, tasks paralelas.
102
+ - Per-task: mesmo fluxo Level 1 do Modo 1 (implementar → validar → commit atômico).
103
+ 4. **Deviation handling:**
104
+ - Se task encontra scope creep, PARE essa task, surface ao usuário.
105
+ - Se task falha verificação, a wave para. Nenhuma wave subsequente roda até resolver.
106
+ 5. **Checkpoint entre waves:**
107
+ - Imprime resumo da wave: tasks completas, commits, deviations.
108
+ - Continua automaticamente exceto se `--checkpoint` foi passado (aí aguarda OK).
109
+ 6. **Level 2 review final:**
110
+ - Após todas as tasks completarem, invoca automaticamente `/dw-review` (comando merged — roda PRD compliance check + code quality review).
111
+ - Apresenta relatório consolidado.
112
+ - Cycle de correções interativo: review surface gaps → usuário decide fix, adiar, ou aceitar.
113
+
114
+ ### Output
115
+
116
+ ```
117
+ .dw/spec/<prd>/
118
+ ├── active-session.md # escrito no checkpoint; consumido por --resume
119
+ ├── run-log.md # log per-wave com SHAs de commit
120
+ └── review-consolidated.md # review final L2+L3 (de /dw-review)
121
+ ```
122
+
123
+ ## Modo 3: Resume (`run --resume`)
124
+
125
+ ### Pré-requisitos
126
+ - `run` anterior (Modo 2) foi interrompido.
127
+ - `active-session.md` existe no `.dw/spec/<prd>/` da PRD atual.
128
+
129
+ ### Comportamento
130
+
131
+ 1. Ler `active-session.md` pra determinar onde a sessão parou.
132
+ 2. Surface ao usuário: "Resumindo da wave N, task X.0. Já completadas: <lista>. Continuar?"
133
+ 3. Em confirmação, resume da próxima task pendente com mesmo comportamento Modo 2.
134
+
135
+ Se `active-session.md` não existe mas tasks não-completadas existem, trate como Modo 2 fresh start.
136
+
137
+ ## Em todos os modos: deviation handling
138
+
139
+ Quando implementação não pode prosseguir como planejado:
140
+
141
+ | Deviation | Ação |
142
+ |-----------|------|
143
+ | Task requer nova dependência não no TechSpec | PARE. Sugerir `/dw-plan techspec --update` pra revisar. |
144
+ | Critério de aceitação ambíguo | PARE. Perguntar ao usuário. |
145
+ | Decisão de test framework faltando | PARE. Usar `dw-testing-discipline` placement doctrine pra propor; pedir sign-off. |
146
+ | Padrão de `.dw/rules/` não encaixa | PARE. Surface o atrito; proponha deviation justificada por ADR ou update das rules. |
147
+ | Complexidade oculta emerge (task estimada 2h, parece 8h) | PARE. Surface; ou split task via `/dw-plan tasks --update` ou aceite delay com nota. |
148
+
149
+ ## Reporting
150
+
151
+ Após qualquer run (Modo 1, 2 ou 3 completar), imprima:
152
+
153
+ - Tasks completas com SHAs de commit.
154
+ - Contagem de arquivos tocados.
155
+ - Testes adicionados (unit + E2E se aplicável).
156
+ - Veredicto Verification Report por task.
157
+ - Para Modo 2: status do review consolidado final.
158
+ - Para Modo 2: deviations encontrados e como resolvidos.
159
+
160
+ ## Anti-patterns
161
+
162
+ - Pular `dw-verify` pra "economizar tempo antes do commit" — produz commits que não buildam.
163
+ - Rodar tasks sem dependência satisfeita — produz commits que não funcionam isolados.
164
+ - Deixar wave paralelo rodar sem watch por deviations — scope creep silencioso compõe.
165
+ - Commitar múltiplas tasks num único commit — quebra bisect, quebra granularidade de revert.
166
+ - Pular review Level 2 final no Modo 2 — entrega features que não batem com PRD.
167
+
168
+ ## Diretrizes finais
169
+
170
+ - Commits atômicos são não-negociáveis. Uma task = um commit (ou um subtask-bundle se explícito).
171
+ - Testes são obrigatórios per estratégia do TechSpec.
172
+ - Veredicto PASS do Verification Report é o gate, não o objetivo — nunca enfraquecer asserts pra passar.
173
+ - Deviation surfacing é feature, não bug. Pare e pergunte. Usuário prefere interrupção a implementação errada.
174
+ - Pra plans multi-dia, `--resume` é seu amigo. Não restart do zero.
175
+
176
+ </system_instructions>
@@ -0,0 +1,222 @@
1
+ <system_instructions>
2
+ Você é o orquestrador de security audit. Roda OWASP static review + supply-chain CVE/secret/IaC scanning + outdated check + supply-chain compromise detection em uma passada. Hard-gates comandos downstream quando há findings CRITICAL ou HIGH.
3
+
4
+ Auto-invocado por `/dw-review` e `/dw-generate-pr` em projetos TS/Python/C#/Rust. Invocação standalone disponível pra audit manual.
5
+
6
+ ## Quando Usar
7
+ - Auto-invocado: `/dw-review` e `/dw-generate-pr` em linguagens suportadas.
8
+ - Manual: quando suspeita supply-chain compromise, quer security pass mid-dev, ou após dependency updates.
9
+ - NÃO use mid-task implementation (use `/dw-run` que tem checks mais leves).
10
+ - NÃO use como substituto pra review humano em código auth/payment de alto risco (use skill `security-review` JUNTO com este).
11
+
12
+ ## Posição no Pipeline
13
+ **Antecessor:** qualquer momento; auto-invocado por `/dw-review`, `/dw-generate-pr` | **Sucessor:** `/dw-bugfix` pra atacar findings, ou `/dw-commit` se APROVADO
14
+
15
+ ## Modos
16
+
17
+ | Invocação | O que roda |
18
+ |-----------|------------|
19
+ | `/dw-secure-audit` | **Padrão.** Audit completo: OWASP static + Trivy SCA/secret/IaC + native lockfile audit + supply-chain check + outdated check. |
20
+ | `/dw-secure-audit --scan-only` | Modo CI — roda scanners, exit não-zero se CRITICAL ou HIGH. Sem planejamento de remediação. |
21
+ | `/dw-secure-audit --plan` | Default scan, mais plano de remediação per-package (opções Conservative / Balanced / Bold). Sem file writes; só o plano. |
22
+ | `/dw-secure-audit --execute` | Plan mais aplica updates: testes scoped por pacote, um retry com `/dw-qa --fix` em falha, commits atômicos, `/dw-qa` como gate final. Reverte e marca BLOQUEADO se recovery falhar. |
23
+
24
+ ## Linguagens Suportadas
25
+
26
+ | Linguagem | Lockfile Audit | OWASP | Trivy SCA/Secrets/IaC | Compromise Check |
27
+ |-----------|---------------|-------|----------------------|------------------|
28
+ | TypeScript / JavaScript | `npm audit` / `pnpm audit` | Sim | Sim | Sim (OSV + GH Advisories) |
29
+ | Python | `pip-audit` | Sim | Sim | Sim |
30
+ | C# / .NET | `dotnet list package --vulnerable` | Sim | Sim | Sim |
31
+ | Rust | `cargo audit` | Sim | Sim | Sim |
32
+ | Outras (Go, Java, etc.) | manual | Sim (best-effort) | Sim (Trivy) | Sim (OSV) |
33
+
34
+ ## Dependências Necessárias
35
+
36
+ - **Trivy** — deve estar instalado (via `npx @brunosps00/dev-workflow install-deps`).
37
+ - **Context7 MCP** — pra best practices específicas de versão.
38
+
39
+ ## Três Camadas de Detecção
40
+
41
+ ### Camada 1: OWASP Static Review (via skill `security-review`)
42
+
43
+ Análise estática language-aware contra OWASP Top 10:
44
+ - A01 Broken access control
45
+ - A02 Cryptographic failures
46
+ - A03 Injection (SQL, NoSQL, OS command, etc.)
47
+ - A04 Insecure design
48
+ - A05 Security misconfiguration
49
+ - A06 Vulnerable / outdated components (overlap com Camada 2)
50
+ - A07 Identification + authentication failures
51
+ - A08 Software / data integrity failures
52
+ - A09 Security logging + monitoring failures
53
+ - A10 Server-side request forgery (SSRF)
54
+
55
+ Output: `.dw/secure-audit/owasp-findings.md` por categoria ordenado por severity.
56
+
57
+ ### Camada 2: Trivy + native lockfile audit
58
+
59
+ Roda em paralelo:
60
+ - `trivy fs <project>` — scans SCA (CVEs conhecidas), secret leaks, IaC issues.
61
+ - `trivy config <project>` — scans Terraform / Dockerfile / K8s configs.
62
+ - Native auditor por linguagem (npm audit / pip-audit / dotnet list / cargo audit) — CVEs lockfile-level.
63
+
64
+ Output: `.dw/secure-audit/trivy-findings.md` + `.dw/secure-audit/lockfile-findings.md`.
65
+
66
+ ### Camada 3: Supply-chain compromise check
67
+
68
+ Cruza dependency tree contra:
69
+ - **OSV.dev** — banco open-source de vulnerabilidades.
70
+ - **GitHub Advisories** — advisories publicadas npm/PyPI/etc.
71
+ - **Lista histórica hardcoded de pacotes maliciosos** — `event-stream`, `ua-parser-js`, `node-ipc`, etc. (pacotes compromised conhecidos por nome+versão range).
72
+
73
+ Output: `.dw/secure-audit/compromise-findings.md` por pacote afetado: COMPROMISED / suspicious / clean.
74
+
75
+ ### Plus: outdated check
76
+
77
+ `npm outdated` / `pip list --outdated` / `dotnet list outdated` / `cargo outdated` pra identificar pacotes atrás em minor ou major.
78
+
79
+ Output: `.dw/secure-audit/outdated.md` com tiers (OUTDATED-MAJOR / OUTDATED-MINOR).
80
+
81
+ ## Classificação
82
+
83
+ Todos os findings são classificados num desses tiers em `.dw/secure-audit/audit-summary.md`:
84
+
85
+ | Tier | Critério | Bloqueia | Ação Sugerida |
86
+ |------|----------|----------|---------------|
87
+ | **COMPROMISED** | Pacote conhecido como malicioso nessa faixa de versão | SIM | Remover imediato / pin pra versão segura |
88
+ | **CRITICAL** | CVE CVSS ≥9.0 OU exploit ativo OU auth bypass | SIM | Update ou substituir em 24h |
89
+ | **HIGH** | CVE CVSS 7.0–8.9 OU exploitável no contexto atual | SIM | Update ou substituir em 1 semana |
90
+ | **OUTDATED-MAJOR** | ≥1 major version atrás (ex: React 17 → 19) | NÃO | Planejar migração próximo trimestre |
91
+ | **OUTDATED-MINOR** | Minor/patch atrás | NÃO | Update rotineiro |
92
+ | **CLEAN** | Sem findings | NÃO | — |
93
+
94
+ ## Hard Gates
95
+
96
+ Verdict é um de:
97
+ - **APROVADO** — sem CRITICAL, HIGH ou COMPROMISED. Arquivo verdict `.dw/secure-audit/audit-summary.md` status: APROVADO.
98
+ - **REPROVADO** — ≥1 CRITICAL, HIGH ou COMPROMISED sem ADR explícito ou remediação em andamento. Status: REPROVADO.
99
+
100
+ **`/dw-review` e `/dw-generate-pr` enforçam:** se linguagem do projeto é suportada E `.dw/secure-audit/audit-summary.md` mais recente está faltando OU REPROVADO, esses comandos retornam REPROVADO. Sem exceção. Sem flag bypass.
101
+
102
+ ## Modo 1: Default (`/dw-secure-audit`)
103
+
104
+ 1. **Detectar stack**: checar package.json / requirements.txt / *.csproj / Cargo.toml.
105
+ 2. **Rodar todas as três camadas em paralelo** (onde possível):
106
+ - OWASP static (via skill `security-review`).
107
+ - Trivy + lockfile audit.
108
+ - Supply-chain compromise check.
109
+ 3. **Rodar outdated check.**
110
+ 4. **Agregar findings** por tier.
111
+ 5. **Escrever summary** em `.dw/secure-audit/audit-summary.md`:
112
+
113
+ ```markdown
114
+ # Security Audit — YYYY-MM-DD
115
+
116
+ ## Veredicto: APROVADO / REPROVADO
117
+
118
+ ## Resumo por Tier
119
+ | Tier | Contagem | Detalhe |
120
+ |------|----------|---------|
121
+ | COMPROMISED | N | <lista> |
122
+ | CRITICAL | N | <lista> |
123
+ | HIGH | N | <lista> |
124
+ | OUTDATED-MAJOR | N | <lista> |
125
+ | OUTDATED-MINOR | N | <lista> |
126
+
127
+ ## Relatórios das camadas
128
+ - OWASP: `owasp-findings.md`
129
+ - Trivy: `trivy-findings.md`
130
+ - Lockfile: `lockfile-findings.md`
131
+ - Compromise: `compromise-findings.md`
132
+ - Outdated: `outdated.md`
133
+
134
+ ## Próximos Passos
135
+ - Se APROVADO: comandos downstream desbloqueados.
136
+ - Se REPROVADO: rodar `/dw-secure-audit --plan` pra rascunhar remediação, OU `/dw-bugfix` per critical finding.
137
+ ```
138
+
139
+ ## Modo 2: Plan (`/dw-secure-audit --plan`)
140
+
141
+ Após default scan, rascunhar plano per-package em `.dw/secure-audit/remediation-plan.md`:
142
+
143
+ Pra cada finding com severity ≥HIGH (ou qualquer COMPROMISED):
144
+ 1. Identificar arquivos afetados (imports do pacote em source).
145
+ 2. Identificar testes que cobrem esses arquivos (scope da remediação).
146
+ 3. Propor três opções:
147
+ - **Conservadora** — pin pra versão patched no mesmo major.
148
+ - **Balanceada** — update pra latest minor ou major.
149
+ - **Ousada** — substituir o pacote OU refatorar.
150
+ 4. Trade-off analysis per opção (esforço, risco, blast radius).
151
+
152
+ Plan NÃO executa. Usuário revisa e escolhe opção per package, depois invoca `--execute`.
153
+
154
+ ## Modo 3: Execute (`/dw-secure-audit --execute`)
155
+
156
+ Pra cada remediação aprovada:
157
+ 1. Aplicar update (`npm install <pkg>@<ver>` ou equivalente).
158
+ 2. Rodar testes scoped (testes em arquivos que importam o pacote).
159
+ 3. Se testes falham → rodar `/dw-qa --fix` uma vez pra tentar recovery automático.
160
+ 4. Se recovery sucesso → commit atômico `chore(security): update <pkg> to <ver> for <CVE>`.
161
+ 5. Se recovery falha → REVERTER update, marcar BLOQUEADO em `remediation-plan.md`, surface ao usuário.
162
+ 6. Após todas as remediações aprovadas: rodar `/dw-qa` como gate final. Se limpo, rodar `/dw-secure-audit` de novo pra verificar todos os findings resolvidos.
163
+
164
+ ## Modo 4: CI (`/dw-secure-audit --scan-only`)
165
+
166
+ Output mínimo:
167
+ - Roda todas as três camadas.
168
+ - Escreve findings em disco.
169
+ - Exit code 0 se APROVADO, 1 se REPROVADO.
170
+ - Sem planejamento.
171
+
172
+ Pra gates pre-merge em CI.
173
+
174
+ ## Skills Complementares
175
+
176
+ - `security-review`: **SEMPRE** — skill OWASP static review embarca no scan.
177
+ - `dw-source-grounding`: **SEMPRE** em modo `--plan` / `--execute` — recomendações de versão citam changelog/release notes oficial com `[source: <url>, version: X.Y, retrieved: YYYY-MM-DD]`.
178
+ - `dw-council`: auto opt-in quando ≥3 pacotes caem em COMPROMISED — stress-test multi-advisor sobre ordem e escopo da remediação.
179
+ - `dw-testing-discipline`: quando testes scoped falham em `--execute`, doutrina de testes aplica (sem flaky retry; investigar).
180
+ - `dw-debug-protocol`: quando finding critical é bug real no nosso código (não só outdated dep), six-step triage aplica.
181
+
182
+ ## Constitution Gate
183
+
184
+ <critical>
185
+ - CRITICAL ou COMPROMISED finding sem ADR justificando aceitação explícita → verdict não pode ser APROVADO.
186
+ - Violações de princípios de constitution security-related (P-009 server-side auth, P-010 secrets-in-repo) escalonam findings — violação de princípio `severity: info` surface aqui vira HIGH.
187
+ </critical>
188
+
189
+ ## Anti-patterns
190
+
191
+ - Rodar `--scan-only` em CI mas ninguém revisar relatório — REJECTs automatizados acumulam, time aprende a ignorar.
192
+ - Pular `--execute` e aplicar updates manualmente sem testes scoped — quebra coisas não relacionadas.
193
+ - Marcar findings como "false positive" sem ADR — padrão erode com tempo.
194
+ - Atualizar finding CRITICAL pra versão BLEEDING edge em vez de patched-and-stable — introduz bugs novos.
195
+ - Rodar scans só em PR time — supply-chain attacks acontecem overnight; considerar runs diários scheduled.
196
+
197
+ ## Diretório de Output
198
+
199
+ ```
200
+ .dw/secure-audit/
201
+ ├── audit-summary.md # verdict + resumo de tiers
202
+ ├── owasp-findings.md # Camada 1
203
+ ├── trivy-findings.md # Camada 2 (SCA + secrets + IaC)
204
+ ├── lockfile-findings.md # Camada 2 (native auditor)
205
+ ├── compromise-findings.md # Camada 3
206
+ ├── outdated.md # outdated check
207
+ ├── remediation-plan.md # output de --plan
208
+ └── execution-log.md # log de --execute
209
+ ```
210
+
211
+ Todos os arquivos commitados. Histórico de audit é parte do repo.
212
+
213
+ ## Por que esta skill existe
214
+
215
+ Anteriormente dois comandos: `/dw-secure-audit` (single-shot gate) e `/dw-secure-audit --plan` (planner + remediator). O split era histórico — ambos compartilham mesmos scanners e findings overlapping. Consolidar reduz:
216
+ - Confusão ("qual rodar?").
217
+ - Scans duplicados (rodar ambos fazia 2× o trabalho do Trivy).
218
+ - Fragmentação de reports (dois dirs separados).
219
+
220
+ Novo comando tem ambos comportamentos como modos de flag. Default = era v0.6 `security-check` (gate). `--plan` e `--execute` cobrem era v0.7 `deps-audit` (planner + remediator).
221
+
222
+ </system_instructions>
@@ -79,7 +79,7 @@ npx -y @brunosps00/dev-workflow@latest update --lang=$DETECTED_LANG
79
79
  O comando `update` sobrescreve arquivos gerenciados e PRESERVA:
80
80
  - `.dw/rules/` (rules do usuário)
81
81
  - `.dw/spec/` (PRDs e tasks em andamento)
82
- - `.dw/intel/` (índice de codebase do `/dw-map-codebase`)
82
+ - `.dw/intel/` (índice de codebase do `/dw-intel --build`)
83
83
 
84
84
  O comando `update` também roda o passo de migração GSD automaticamente — se o projeto tem `.planning/` legado (de uso prévio do GSD), o conteúdo é migrado para `.dw/intel/`, `.dw/spec/active-session.md`, `.dw/spec/quick/`, etc., e `.planning/` é renomeado para `.planning.gsd-archive-<DATA>/` para inspeção. Os arquivos `.claude/commands/gsd/`, `.claude/agents/gsd-*.md`, `.claude/hooks/gsd-*.js` e `.claude/gsd-file-manifest.json` são removidos durante a migração.
85
85
 
@@ -1,6 +1,6 @@
1
1
  # Padrões de Teste Playwright
2
2
 
3
- Referência para `/dw-run-qa` e `/dw-functional-doc`. Padrões E2E comuns.
3
+ Referência para `/dw-qa` e `/dw-functional-doc`. Padrões E2E comuns.
4
4
 
5
5
  ## 1. Navegação Autenticada
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Catálogo de Refatoração — Exemplos Antes/Depois
2
2
 
3
- Referência para `/dw-refactoring-analysis`. Baseado no catálogo de Fowler.
3
+ Referência para `/dw-brainstorm --refactor`. Baseado no catálogo de Fowler.
4
4
 
5
5
  ## 1. Função Longa → Extract Function
6
6
 
@@ -49,4 +49,4 @@
49
49
  ## Próximos Passos
50
50
 
51
51
  - [ ] Validar com stakeholders
52
- - [ ] Criar PRD: `/dw-create-prd`
52
+ - [ ] Criar PRD: `/dw-plan prd`
@@ -22,7 +22,7 @@ Foque no problema, não na solução. Evite entrar em "como implementar".]
22
22
  Fontes:
23
23
  - PRDs em `.dw/spec/prd-*/prd.md` (features já entregues ou em desenvolvimento)
24
24
  - `.dw/rules/index.md` (overview do produto)
25
- - `.dw/intel/` (indice queryable — construido por `/dw-map-codebase`, consultado via `/dw-intel`)
25
+ - `.dw/intel/` (indice queryable — construido por `/dw-intel --build`, consultado via `/dw-intel`)
26
26
 
27
27
  Formato:]
28
28
 
@@ -85,6 +85,6 @@ Idealmente 2-4 stories. Se são mais de 5, provavelmente não é MVP.]
85
85
 
86
86
  Escolha UM:
87
87
 
88
- - **`/dw-create-prd`** com este one-pager como input — quando a direção está clara mas precisamos detalhar user stories, acceptance criteria e passar ao techspec
89
- - **`/dw-run-task`** — quando é um IMPROVES tão pequeno que cabe em task única (até 3 arquivos, sem novo endpoint/tela) — escreva um PRD curto antes
88
+ - **`/dw-plan prd`** com este one-pager como input — quando a direção está clara mas precisamos detalhar user stories, acceptance criteria e passar ao techspec
89
+ - **`/dw-run`** — quando é um IMPROVES tão pequeno que cabe em task única (até 3 arquivos, sem novo endpoint/tela) — escreva um PRD curto antes
90
90
  - **Parar aqui** — se alguma "Open Question" é bloqueante, parar e resolver com stakeholder antes de avançar
@@ -94,12 +94,12 @@ services: []
94
94
 
95
95
  ## Escopo MVP
96
96
 
97
- [A primeira feature menor que voce vai entregar. Pensada como user stories — vai dirigir a primeira rodada de /dw-create-prd.]
97
+ [A primeira feature menor que voce vai entregar. Pensada como user stories — vai dirigir a primeira rodada de /dw-plan prd.]
98
98
 
99
99
  - Como [persona], eu posso [acao] para que [beneficio]
100
100
  - Como [persona], eu posso [acao] para que [beneficio]
101
101
 
102
- Se voce ainda nao tem a primeira feature em mente, tudo bem — deixa placeholder e roda o /dw-create-prd quando tiver.
102
+ Se voce ainda nao tem a primeira feature em mente, tudo bem — deixa placeholder e roda o /dw-plan prd quando tiver.
103
103
 
104
104
  ## Nao Estou Fazendo (explicito)
105
105
 
@@ -115,7 +115,7 @@ Se voce ainda nao tem a primeira feature em mente, tudo bem — deixa placeholde
115
115
 
116
116
  ## Perguntas em Aberto
117
117
 
118
- [O que este one-pager nao consegue responder sozinho. Resolva antes do /dw-create-prd ou escale para um stakeholder.]
118
+ [O que este one-pager nao consegue responder sozinho. Resolva antes do /dw-plan prd ou escale para um stakeholder.]
119
119
 
120
120
  - [pergunta 1]
121
121
  - [pergunta 2]
@@ -124,6 +124,6 @@ Se voce ainda nao tem a primeira feature em mente, tudo bem — deixa placeholde
124
124
 
125
125
  Escolha UM:
126
126
 
127
- - **`/dw-create-prd`** — quando voce tem a primeira feature em mente e quer rascunhar o PRD em cima deste stack
127
+ - **`/dw-plan prd`** — quando voce tem a primeira feature em mente e quer rascunhar o PRD em cima deste stack
128
128
  - **`/dw-analyze-project`** — apos primeiro commit substancial, para enriquecer `.dw/rules/` com convencoes por modulo
129
- - **`/dw-deps-audit --scan-only`** — para confirmar que nenhuma dep vulneravel veio dos templates `create-*`
129
+ - **`/dw-secure-audit --plan --scan-only`** — para confirmar que nenhuma dep vulneravel veio dos templates `create-*`
@@ -34,7 +34,7 @@ feat/prd-[nome-funcionalidade]
34
34
  ## Workflow
35
35
 
36
36
  Cada task segue o fluxo:
37
- 1. `/dw-run-task [N]_task.md` - Implementa a task
37
+ 1. `/dw-run [N]_task.md` - Implementa a task
38
38
  2. Testes unitários incluídos na implementação
39
39
  3. Commit ao final da task (sem push)
40
40
  4. Próxima task ou `/dw-generate-pr [branch-alvo]` quando todas concluídas
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: api-testing-recipes
3
- description: Validated API-testing snippets (.http, pytest+httpx, supertest, WebApplicationFactory, reqwest) used by /dw-run-qa and /dw-fix-qa when the project has no UI. Default format is .http (REST Client) for IDE portability.
3
+ description: Use for API testing recipes (.http, pytest+httpx, supertest, WebApplicationFactory, reqwest). Invoked by /dw-qa in API mode and when authoring API tests. Default format is .http for IDE portability.
4
4
  allowed-tools:
5
5
  - Read
6
6
  - Write
@@ -10,7 +10,7 @@ allowed-tools:
10
10
 
11
11
  # api-testing-recipes
12
12
 
13
- Curated library of **API-testing snippets** that `/dw-run-qa` and `/dw-fix-qa` use when a project is API-only (no Playwright). Each recipe is a ready-to-customize block per stack; the default is `.http` (REST Client) for maximum portability across IDEs.
13
+ Curated library of **API-testing snippets** that `/dw-qa` and `/dw-qa --fix` use when a project is API-only (no Playwright). Each recipe is a ready-to-customize block per stack; the default is `.http` (REST Client) for maximum portability across IDEs.
14
14
 
15
15
  ## Why a skill (not inline)
16
16
 
@@ -22,14 +22,14 @@ Curated library of **API-testing snippets** that `/dw-run-qa` and `/dw-fix-qa` u
22
22
 
23
23
  Read this skill when:
24
24
 
25
- - `/dw-run-qa` detected API mode (no UI deps in the manifest) or was invoked with `--api`.
26
- - `/dw-fix-qa` is retesting a bug whose `evidence_type` is `api-log`.
25
+ - `/dw-qa` detected API mode (no UI deps in the manifest) or was invoked with `--api`.
26
+ - `/dw-qa --fix` is retesting a bug whose `evidence_type` is `api-log`.
27
27
  - Generating a baseline test suite from an OpenAPI spec.
28
28
  - Authoring contract checks against a backend.
29
29
 
30
30
  Do NOT use when:
31
31
 
32
- - The project has a UI and `/dw-run-qa` is in UI mode → use Playwright MCP instead.
32
+ - The project has a UI and `/dw-qa` is in UI mode → use Playwright MCP instead.
33
33
  - The user wants browser-level acceptance (forms, navigation, accessibility) — that's Playwright territory.
34
34
 
35
35
  ## Available Recipes
@@ -49,7 +49,7 @@ Picking order:
49
49
 
50
50
  ## How to Compose
51
51
 
52
- The composing command (`/dw-run-qa` API mode) follows this loop:
52
+ The composing command (`/dw-qa` API mode) follows this loop:
53
53
 
54
54
  1. **Pick the recipe** based on the rules above.
55
55
  2. **Read the recipe file** (`recipes/<name>.md`) for the variable conventions, test-matrix shape, and an example block.
@@ -135,4 +135,4 @@ Add one env var per role; the recipe reads them as needed. Tests that don't need
135
135
 
136
136
  ## What `dw-run-qa` does
137
137
 
138
- In API mode, `/dw-run-qa` reads `QA/test-credentials.md` (or `.env`) for the env var names, picks the recipe, and substitutes variables at test-generation time. The script files reference `@variable` references only — never raw tokens.
138
+ In API mode, `/dw-qa` reads `QA/test-credentials.md` (or `.env`) for the env var names, picks the recipe, and substitutes variables at test-generation time. The script files reference `@variable` references only — never raw tokens.
@@ -65,4 +65,4 @@ That's 9 test cases for one RF — the floor for a real API surface, not the cei
65
65
 
66
66
  ## How `dw-run-qa` uses this
67
67
 
68
- When in API mode, `/dw-run-qa` walks each `RF-XX` in the PRD, runs through this matrix, and emits PASS/FAIL per RF — not per test case. A single FAIL in any tier marks the RF as FAIL and lands a `BUG-NN` entry pointing to the failing log line.
68
+ When in API mode, `/dw-qa` walks each `RF-XX` in the PRD, runs through this matrix, and emits PASS/FAIL per RF — not per test case. A single FAIL in any tier marks the RF as FAIL and lands a `BUG-NN` entry pointing to the failing log line.
@@ -1,6 +1,6 @@
1
1
  # OpenAPI-driven mode — generating tests from a spec
2
2
 
3
- When the project exposes an OpenAPI spec (static `openapi.yaml`/`openapi.json`, or dynamic `/openapi.json` for FastAPI), `/dw-run-qa` can derive a baseline test suite directly from it. This catches contract drift between code and spec for free.
3
+ When the project exposes an OpenAPI spec (static `openapi.yaml`/`openapi.json`, or dynamic `/openapi.json` for FastAPI), `/dw-qa` can derive a baseline test suite directly from it. This catches contract drift between code and spec for free.
4
4
 
5
5
  ## When to use this mode
6
6
 
@@ -20,13 +20,13 @@ The generated tests live alongside hand-written ones in `{{PRD_PATH}}/QA/scripts
20
20
 
21
21
  ## How to run it
22
22
 
23
- `/dw-run-qa --from-openapi <spec-path-or-url>` — explicit. The `<spec-path-or-url>` can be:
23
+ `/dw-qa --from-openapi <spec-path-or-url>` — explicit. The `<spec-path-or-url>` can be:
24
24
 
25
25
  - `./openapi.yaml`
26
26
  - `http://localhost:3000/openapi.json` (FastAPI default)
27
27
  - `http://localhost:3000/swagger/v1/swagger.json` (ASP.NET Core default)
28
28
 
29
- Without the flag, `/dw-run-qa` auto-detects:
29
+ Without the flag, `/dw-qa` auto-detects:
30
30
 
31
31
  - File at repo root: `openapi.yaml`, `openapi.json`, `swagger.yaml`, `swagger.json`.
32
32
  - Project running locally: `GET /openapi.json`, `GET /swagger/v1/swagger.json`, `GET /api-docs`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: docker-compose-recipes
3
- description: Validated docker-compose service blocks (postgres, redis, mailhog, minio, meilisearch, jaeger, traefik, etc.) for dev and prod, composed by /dw-new-project and /dw-dockerize. Each service is a standalone YAML with healthcheck, named volume, and env conventions.
3
+ description: Use for docker-compose service blocks (postgres, redis, mailhog, minio, meilisearch, jaeger, traefik). Invoked by /dw-new-project, /dw-dockerize, or when composing dev/prod compose files.
4
4
  allowed-tools:
5
5
  - Read
6
6
  - Write