@luanpdd/kit-mcp 1.34.0 → 1.36.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 (118) hide show
  1. package/README.md +1 -1
  2. package/bin/cli.js +2 -2
  3. package/bin/mcp.js +6 -6
  4. package/bin/ui.js +74 -74
  5. package/gates/ai-prompt-stability.md +120 -120
  6. package/gates/budget-description.md +68 -68
  7. package/gates/confidence.md +29 -29
  8. package/gates/dependency-check.md +33 -33
  9. package/gates/dept-cycle-prevention.md +179 -179
  10. package/gates/golden-signals-coverage.md +133 -133
  11. package/gates/legacy-refactor-safety.md +178 -178
  12. package/gates/multi-tenant-rls-coverage.md +102 -102
  13. package/gates/no-personal-uuid.md +72 -72
  14. package/gates/obs-agents-mcp-supabase.md +86 -86
  15. package/gates/obs-skills-frontmatter.md +76 -76
  16. package/gates/observability-coverage.md +151 -151
  17. package/gates/omm-no-regression.md +83 -83
  18. package/gates/postmortem-template-required.md +127 -127
  19. package/gates/prr-checklist-coverage.md +128 -128
  20. package/gates/regression.md +32 -32
  21. package/gates/release-pipeline-policy.md +132 -132
  22. package/gates/secrets-scan.md +33 -33
  23. package/gates/service-role-not-in-user-facing.md +113 -113
  24. package/gates/skill-must-include.md +71 -71
  25. package/gates/sync-idempotent.md +62 -62
  26. package/gates/verify-phase-goal.md +34 -34
  27. package/kit/agents/designer-ui.md +216 -216
  28. package/kit/agents/workflow-generator.md +537 -0
  29. package/kit/commands/adicionar-backlog.md +1 -1
  30. package/kit/commands/adicionar-fase.md +1 -1
  31. package/kit/commands/adicionar-tarefa.md +1 -1
  32. package/kit/commands/auditar-observabilidade.md +103 -103
  33. package/kit/commands/auditar-toil.md +129 -129
  34. package/kit/commands/caracterizar-prompt.md +195 -195
  35. package/kit/commands/criar-workflow.md +158 -0
  36. package/kit/commands/definir-perfil.md +1 -1
  37. package/kit/commands/definir-slo.md +108 -108
  38. package/kit/commands/fio.md +1 -1
  39. package/kit/commands/golden-signals.md +142 -142
  40. package/kit/commands/instrumentar-fase.md +200 -200
  41. package/kit/commands/investigar-producao.md +162 -162
  42. package/kit/commands/observabilidade.md +118 -118
  43. package/kit/commands/postmortem.md +179 -179
  44. package/kit/commands/prr.md +205 -205
  45. package/kit/commands/publicar-rapido.md +207 -207
  46. package/kit/commands/risk-budget.md +220 -220
  47. package/kit/commands/sre.md +230 -230
  48. package/kit/file-manifest.json +5 -2
  49. package/kit/framework/references/output-style.md +22 -22
  50. package/kit/hooks/post-apply-migration.js +199 -199
  51. package/kit/hooks/sidecar-tool-publisher.js +210 -210
  52. package/kit/skills/_shared-dados-distribuidos/glossary.md +224 -224
  53. package/kit/skills/_shared-legacy/glossary.md +389 -389
  54. package/kit/skills/_shared-multi-tenant/glossary.md +186 -186
  55. package/kit/skills/_shared-observability/glossary.md +396 -396
  56. package/kit/skills/_shared-sre/glossary.md +712 -712
  57. package/kit/skills/_shared-supabase/glossary.md +234 -234
  58. package/kit/skills/blameless-postmortems/SKILL.md +340 -340
  59. package/kit/skills/burn-rate-alerting/SKILL.md +258 -258
  60. package/kit/skills/cascading-failures/SKILL.md +311 -311
  61. package/kit/skills/core-analysis-loop/SKILL.md +352 -352
  62. package/kit/skills/distributed-tracing/SKILL.md +362 -362
  63. package/kit/skills/dynamic-workflow-authoring/SKILL.md +327 -0
  64. package/kit/skills/eliminating-toil/SKILL.md +243 -243
  65. package/kit/skills/event-based-slos/SKILL.md +296 -296
  66. package/kit/skills/four-golden-signals/SKILL.md +314 -314
  67. package/kit/skills/hermetic-builds/SKILL.md +323 -323
  68. package/kit/skills/legacy-monster-methods/SKILL.md +444 -444
  69. package/kit/skills/llm-as-dependency/SKILL.md +436 -436
  70. package/kit/skills/load-shedding-graceful-degradation/SKILL.md +396 -396
  71. package/kit/skills/observability-driven-development/SKILL.md +315 -315
  72. package/kit/skills/observability-maturity-model/SKILL.md +222 -222
  73. package/kit/skills/opentelemetry-standard/SKILL.md +351 -351
  74. package/kit/skills/production-readiness-review/SKILL.md +305 -305
  75. package/kit/skills/release-engineering/SKILL.md +367 -367
  76. package/kit/skills/retry-strategies/SKILL.md +372 -372
  77. package/kit/skills/sre-risk-management/SKILL.md +221 -221
  78. package/kit/skills/structured-events/SKILL.md +265 -265
  79. package/kit/skills/supabase-cron-queues/SKILL.md +275 -275
  80. package/kit/skills/supabase-database-functions/SKILL.md +332 -332
  81. package/kit/skills/supabase-declarative-schema/SKILL.md +183 -183
  82. package/kit/skills/supabase-pgvector-rag/SKILL.md +253 -253
  83. package/kit/skills/supabase-postgres-style/SKILL.md +138 -138
  84. package/kit/skills/supabase-storage/SKILL.md +234 -234
  85. package/kit/skills/telemetry-pipelines/SKILL.md +259 -259
  86. package/kit/skills/telemetry-sampling/SKILL.md +256 -256
  87. package/kit/skills/ui-anti-padroes-ia/SKILL.md +261 -261
  88. package/kit/skills/ui-contexto-produto/SKILL.md +248 -248
  89. package/kit/skills/ui-cor-estrategia/SKILL.md +213 -213
  90. package/kit/skills/ui-critica-auditoria/SKILL.md +260 -260
  91. package/kit/skills/ui-motion-funcional/SKILL.md +264 -264
  92. package/kit/skills/ui-ritmo-espacial/SKILL.md +259 -259
  93. package/kit/skills/ui-tipografia/SKILL.md +211 -211
  94. package/package.json +1 -1
  95. package/src/cli/index.js +1114 -1114
  96. package/src/cli/render.js +194 -194
  97. package/src/cli/upgrade-check.js +135 -135
  98. package/src/core/error-redaction.js +76 -76
  99. package/src/core/failures.js +153 -153
  100. package/src/core/gate-runner.js +205 -205
  101. package/src/core/gates.js +82 -82
  102. package/src/core/logger.js +170 -170
  103. package/src/core/manifest-verify.js +174 -174
  104. package/src/core/metrics.js +268 -268
  105. package/src/core/notify.js +60 -60
  106. package/src/core/path-safety.js +141 -141
  107. package/src/core/replays.js +120 -120
  108. package/src/core/ui.js +185 -185
  109. package/src/mcp-server/install.js +149 -149
  110. package/src/mcp-server/roots.js +124 -124
  111. package/src/ui/auto-spawn.js +113 -113
  112. package/src/ui/browser.js +78 -78
  113. package/src/ui/client.js +130 -130
  114. package/src/ui/events.js +65 -65
  115. package/src/ui/lockfile.js +191 -191
  116. package/src/ui/port.js +67 -67
  117. package/src/ui/server.js +547 -547
  118. package/src/ui/wrapper.js +129 -129
@@ -1,243 +1,243 @@
1
- ---
2
- name: eliminating-toil
3
- description: Use ao identificar/eliminar toil — 6 critérios canônicos (manual, repetitivo, automatizável, tático, sem valor durável, escala linear), regra ≤ 50%, automação como invariante.
4
- ---
5
-
6
- # SRE — Eliminating Toil
7
-
8
- ## Quando usar
9
-
10
- LLM carrega esta skill ao auditar tarefas operacionais, classificar trabalho como toil/non-toil, ou propor automação. Trigger phrases:
11
-
12
- - "toil", "trabalho operacional"
13
- - "eliminar toil", "reduzir toil"
14
- - "≤ 50% toil", "regra 50%"
15
- - "automation", "automatizar tarefa repetitiva"
16
- - "isso é toil ou overhead?"
17
- - "Google SRE cap 5"
18
- - "TOIL-AUDIT"
19
-
20
- ## Regras absolutas
21
-
22
- - **Toil tem 6 critérios canônicos** — uma tarefa É toil se TODOS os 6 valem: (1) **Manual** — humano executa cada vez; (2) **Repetitivo** — você já fez isso 3+ vezes; (3) **Automatizável** — script/cron resolve sem julgamento humano; (4) **Tático** — reage a evento, não planeja; (5) **Sem valor durável** — não cria asset permanente; (6) **Escala linear** — mais users = mais trabalho. Se QUALQUER um dos 6 = não, NÃO é toil (é overhead ou grungy work).
23
- - **Regra ≤ 50%** — SRE não pode gastar mais que 50% do tempo em toil; restante é engineering (automação, capacity planning, instrumentation, postmortems). Se medindo > 50% por 1+ trimestre, é red flag — peça ajuda à liderança.
24
- - **Toil ≠ overhead** — reuniões, RH, planejamento de quarter, performance review são **overhead** — necessários, não-elimináveis, NÃO contam para a regra ≤ 50%. Confundir overhead com toil = sub-medir.
25
- - **Toil ≠ grungy work** — refactor de código legado, security cleanup, DB rebuild para reduzir bloat são **grungy work** — necessários, têm valor durável, são engineering trabalho. NÃO contam como toil.
26
- - **Automação é o objetivo, não o meio** — automatizar parcialmente (humano clica botão A, depois B, depois C) ainda é toil. Automação completa (cron + script + alert se falhar) elimina toil. Meias-medidas perpetuam.
27
- - **Toil tax cresce com produto** — cada feature nova adiciona toil potencial: deploy manual, migration manual, feature flag rotation, customer-specific config. Prevenir > remediar — design feature considerando "como auto-operar isso?".
28
- - **Quantificar toil em horas-pessoa** — "TOIL-AUDIT.md" deve ter coluna `hours_per_week_per_person` para cada item. Sem quantificação, "muito toil" é subjetivo e não-acionável.
29
- - **Priorizar por (frequency × pain) / automation_effort** — P0 = alto frequency + alto pain + baixo effort. P2 = baixa frequency OU alto effort. Não automatizar tudo de uma vez — começar pelo P0.
30
-
31
- ## Patterns canônicos
32
-
33
- ### Pattern: decision tree para classificar trabalho
34
-
35
- ```text
36
- Tarefa repetitiva detectada → aplicar 6 critérios canônicos:
37
-
38
- 1. Manual? (humano executa cada vez) ┐
39
- 2. Repetitiva? (já fiz isso 3+ vezes) │
40
- 3. Automatizável? (script/cron resolve sem julgamento) │── Se TODOS sim → TOIL
41
- 4. Tática? (reage a evento, não planeja) │ → automatizar / eliminar
42
- 5. Sem valor durável? (não cria asset permanente) │ → contar em ≤ 50% rule
43
- 6. Escala linear? (mais users = mais trabalho) ─┘
44
-
45
- Se NÃO for toil mas repetitivo, classificar:
46
- - OVERHEAD (reuniões, RH, planning) → não-eliminável; NÃO conta em ≤ 50%
47
- - GRUNGY WORK (refactor, sec cleanup) → necessário, valor durável → projeto engineering
48
- - PROJECT WORK (criar novo serviço) → engineering trabalho ≠ toil
49
- ```
50
-
51
- ### Pattern: template `TOIL-AUDIT.md`
52
-
53
- Formato canônico que `toil-auditor` (Phase 37) gera:
54
-
55
- ```markdown
56
- # TOIL-AUDIT — <projeto> — <data>
57
-
58
- ## Métrica agregada
59
-
60
- - Toil estimado: X.X horas-pessoa/semana (Y% do tempo do time)
61
- - **Status vs ≤ 50% rule:** [GREEN: < 30%] | [YELLOW: 30-50%] | [RED: > 50%]
62
- - Top 3 áreas: <lista>
63
-
64
- ## Itens identificados
65
-
66
- | # | Item | Frequência | Hours/week | Pain (1-5) | Automation effort | Priority |
67
- |---|------|------------|------------|------------|-------------------|----------|
68
- | 1 | Reset DB seed manual antes de cada test run | 2×/dia | 1.5 h | 4 | M (3 dias) | P0 |
69
- | 2 | Rotation de access_token de Edge Function | 1×/semana | 0.5 h | 2 | S (1 dia) | P1 |
70
- | 3 | Rebuild de índice fts_search após batch import | 1×/mês | 0.5 h | 3 | M (2 dias) | P1 |
71
- | 4 | Limpeza manual de orphan rows em audit_log | 1×/semana | 0.3 h | 1 | S (1 dia) | P2 |
72
-
73
- ## P0 (automatizar agora)
74
-
75
- ### Item 1: Reset DB seed manual
76
-
77
- **Por que é toil:** atende 6 critérios canônicos (manual, repetitivo 2×/dia, automatizável via script + pg_cron, tática reativa, sem valor durável, escala com #devs).
78
-
79
- **Automação proposta:** `make db-reset` que invoca `supabase db reset && pnpm run seed`. Adicionar pre-test hook em CI.
80
-
81
- **Esforço estimado:** 3 dias (Med — script existe parcialmente, falta seed deterministic).
82
-
83
- **Owner sugerido:** @dev-tools-team
84
-
85
- ## P1 / P2 (escalonar)
86
-
87
- ...
88
-
89
- ## Não-toil identificado
90
-
91
- - **Overhead:** sprint planning (2h × semana × 5 pessoas = 10h/semana) — NÃO conta no ≤ 50%
92
- - **Grungy work:** refactor de `legacy_orders_service` (8h × semana × 1 pessoa = 8h/semana) — projeto, não toil
93
- ```
94
-
95
- ### Pattern: estágios de automação (níveis Google)
96
-
97
- | Estágio | Descrição | Exemplo |
98
- |---|---|---|
99
- | **L0: Manual** | 100% humano | "Cada deploy: SSH no host, copy binary, kill+restart" |
100
- | **L1: Documented** | Runbook escrito; humano segue passos | "Doc passo-a-passo de deploy em wiki" |
101
- | **L2: Tooled** | Script executa passos; humano invoca | "`./deploy.sh prod`" |
102
- | **L3: Self-service** | UI/CLI trigger; humano clica | "GitHub Actions deploy on PR merge" |
103
- | **L4: Autonomous** | Sem humano; só fail-state intervenção | "Auto-rollback se SLO burn rate > 4 nos primeiros 5 min após deploy" |
104
-
105
- Meta SRE é mover toda toil de L0/L1 para L3/L4. L2 é meio-passo aceitável quando L3+ requer investimento maior. **L1 (apenas runbook) é toil disfarçado** — runbook é manual com passo extra de "ler doc".
106
-
107
- ### Pattern: identificação de toil via git log + scripts
108
-
109
- ```bash
110
- # PT-BR: scripts shell em runbooks/ ou docs/runbooks/
111
- find . -name "*.sh" -path "*runbook*" -o -path "*ops*" | head -20
112
-
113
- # PT-BR: "manual steps" em README/docs (heurística — frase canônica)
114
- grep -rn "manually\|por favor\|run this\|every week\|cada semana" --include="*.md" .
115
-
116
- # PT-BR: tarefas repetitivas via git log — commits de mesmo tipo
117
- git log --since="3 months ago" --pretty=format:"%s" | sort | uniq -c | sort -rn | head -20
118
- # Ex: "20× Re-run failed migration in prod" → TOIL candidato
119
- # Ex: "15× Bump deploy-token" → TOIL candidato
120
-
121
- # PT-BR: cron jobs já automatizados (saída esperada)
122
- crontab -l 2>/dev/null
123
- cat /etc/cron.d/* 2>/dev/null
124
- ```
125
-
126
- ### Pattern: "toil tax" — prevenir feature nascer com toil
127
-
128
- ```text
129
- Antes de mergear PR de nova feature, perguntar:
130
-
131
- 1. "Como auto-operar isso em prod?" → instrumentação ODD
132
- 2. "Como auto-monitorar?" → 4 golden signals
133
- 3. "Como auto-recuperar de fail comum?" → retry, circuit breaker
134
- 4. "Como auto-rotacionar credenciais?" → vault + cron rotation
135
- 5. "Como auto-limpar dados históricos?" → retention policy + scheduled cleanup
136
- 6. "Como onboarding de novo cliente?" → self-service signup, não Slack ping
137
-
138
- Se QUALQUER resposta = "humano fará isso" → toil tax. Bloqueie ou descontar do release budget.
139
- ```
140
-
141
- ## Anti-patterns
142
-
143
- ### ANTI: confundir overhead com toil
144
-
145
- ```text
146
- ANTI: contar reuniões, RH, planning, performance review como toil — toda
147
- atividade não-codificadora vira "toil" no audit.
148
-
149
- PROBLEMA: métrica inflada (e.g., 60% "toil" falso); ações erradas — cortar
150
- reunião não diminui toil real; equipe perde tempo em automação
151
- de overhead (que é não-eliminável por design).
152
-
153
- CERTO: overhead é categoria separada; ≤ 50% rule conta APENAS toil estrito
154
- (6 critérios canônicos). Audit lista overhead em seção própria,
155
- fora do total.
156
- ```
157
-
158
- ### ANTI: hero culture (toil mascara via heroísmo)
159
-
160
- ```text
161
- ANTI: engineer fica 2h por dia executando deploys manuais e é "celebrado
162
- por dedicação" / "salvador" — toil nunca aparece em métrica.
163
-
164
- PROBLEMA: toil invisível para liderança; investimento em automação adiado
165
- indefinidamente; engineer pede demissão; sucessor herda toil sem
166
- context — incidente garantido. Ciclo se repete.
167
-
168
- CERTO: TOIL-AUDIT trimestral mandatório; quantificar em hours/week por
169
- pessoa; tornar visível em dashboards de produtividade. Heroísmo
170
- sustentado = sinal de underinvestment, não de mérito.
171
- ```
172
-
173
- ### ANTI: documentar runbook em vez de automatizar
174
-
175
- ```text
176
- ANTI: "Vamos só escrever um doc detalhado de como fazer isso passo-a-passo"
177
- — runbook de 30 passos no wiki, sem script.
178
-
179
- PROBLEMA: L1 (Documented) ainda é toil — humano lê doc, segue passos,
180
- falha em algum, doc desatualiza em 3 meses; primeira pessoa que
181
- segue após drift quebra prod; ninguém atualiza doc retroativamente.
182
-
183
- CERTO: doc como passo intermediário (L1); meta é L3/L4 (autonomous);
184
- marcar runbook com TODO de automação + owner + due date; sprint
185
- seguinte transforma em script (L2) ou melhor.
186
- ```
187
-
188
- ### ANTI: automatizar parcialmente
189
-
190
- ```text
191
- ANTI: script faz 3 dos 5 passos; humano completa os outros 2 — "execute
192
- primeiro ./step1.sh, depois manualmente faça X em prod, depois
193
- ./step3.sh".
194
-
195
- PROBLEMA: ainda é toil (humano envolvido); contexto-switch entre script e
196
- humano dobra tempo total; script raramente atualizado por estar
197
- "incompleto"; degrada para chain frágil que ninguém quer mexer.
198
-
199
- CERTO: automação completa OU não automatizar — meias-medidas perpetuam.
200
- Se faltam 2 passos manuais, gastar mais 1 dia para fechar o loop;
201
- resultado é L3/L4 autônomo, não L1.5 frankenstein.
202
- ```
203
-
204
- ### ANTI: ignorar toil de baixa frequência
205
-
206
- ```text
207
- ANTI: "Só faço isso 1× por trimestre, não vale automatizar" — descartar
208
- tarefas raras do audit.
209
-
210
- PROBLEMA: cumulative impact alto (10 tarefas trimestrais × 4 trimestres ×
211
- 30 min = 20h/ano); cada vez que retorna, pessoa esquece passos;
212
- documentação envelhece entre execuções; DR exercises e migrations
213
- raras são exatamente onde erro humano custa mais.
214
-
215
- CERTO: priorizar por (frequency × pain) / effort; baixa frequência +
216
- alto pain (e.g., DR exercise, schema migration crítica) = ainda
217
- P1. Frequência baixa ≠ toil baixo — soma de raras é alta.
218
- ```
219
-
220
- ## Verificação
221
-
222
- Antes de marcar audit de toil como completo:
223
-
224
- 1. **Aplicado os 6 critérios canônicos** — cada item passou pelo decision tree (manual, repetitivo, automatizável, tático, sem valor durável, escala linear)
225
- 2. **Quantificado em hours/week** — não "muito toil" mas "3.5h/week por pessoa"
226
- 3. **% do tempo do time** computado — comparado contra ≤ 50% rule
227
- 4. **Priorização por (frequency × pain) / effort** — P0/P1/P2 atribuído
228
- 5. **Owner nomeado** para cada item P0
229
- 6. **Overhead identificado separadamente** — não conta para ≤ 50%
230
- 7. **Grungy work identificado separadamente** — projeto engineering, não toil
231
- 8. **Pelo menos 1 item P0 escalonado** com automação proposta + esforço estimado
232
-
233
- ---
234
-
235
- ## Ver também
236
-
237
- - [`_shared-sre/glossary.md`](../_shared-sre/glossary.md) — termos canônicos toil, overhead, grungy work, automation
238
- - [`observability-maturity-model`](../observability-maturity-model/SKILL.md) (v1.9) — Capacidade 3 (Complexidade/Tech Debt) consome toil score
239
- - [`production-readiness-review`](../production-readiness-review/SKILL.md) — PRR axis "Change Management" verifica deploy não é toil
240
- - [`blameless-postmortems`](../blameless-postmortems/SKILL.md) — postmortems de toil-induced incidents alimentam audit
241
- - [`sre-risk-management`](../sre-risk-management/SKILL.md) — toil reduz tempo para reduzir risk
242
-
243
- *Material-fonte: Site Reliability Engineering — Beyer, Jones, Petoff, Murphy (Google/O'Reilly, 2016) — Cap 5: "Eliminating Toil".*
1
+ ---
2
+ name: eliminating-toil
3
+ description: Use ao identificar/eliminar toil — 6 critérios canônicos (manual, repetitivo, automatizável, tático, sem valor durável, escala linear), regra ≤ 50%, automação como invariante.
4
+ ---
5
+
6
+ # SRE — Eliminating Toil
7
+
8
+ ## Quando usar
9
+
10
+ LLM carrega esta skill ao auditar tarefas operacionais, classificar trabalho como toil/non-toil, ou propor automação. Trigger phrases:
11
+
12
+ - "toil", "trabalho operacional"
13
+ - "eliminar toil", "reduzir toil"
14
+ - "≤ 50% toil", "regra 50%"
15
+ - "automation", "automatizar tarefa repetitiva"
16
+ - "isso é toil ou overhead?"
17
+ - "Google SRE cap 5"
18
+ - "TOIL-AUDIT"
19
+
20
+ ## Regras absolutas
21
+
22
+ - **Toil tem 6 critérios canônicos** — uma tarefa É toil se TODOS os 6 valem: (1) **Manual** — humano executa cada vez; (2) **Repetitivo** — você já fez isso 3+ vezes; (3) **Automatizável** — script/cron resolve sem julgamento humano; (4) **Tático** — reage a evento, não planeja; (5) **Sem valor durável** — não cria asset permanente; (6) **Escala linear** — mais users = mais trabalho. Se QUALQUER um dos 6 = não, NÃO é toil (é overhead ou grungy work).
23
+ - **Regra ≤ 50%** — SRE não pode gastar mais que 50% do tempo em toil; restante é engineering (automação, capacity planning, instrumentation, postmortems). Se medindo > 50% por 1+ trimestre, é red flag — peça ajuda à liderança.
24
+ - **Toil ≠ overhead** — reuniões, RH, planejamento de quarter, performance review são **overhead** — necessários, não-elimináveis, NÃO contam para a regra ≤ 50%. Confundir overhead com toil = sub-medir.
25
+ - **Toil ≠ grungy work** — refactor de código legado, security cleanup, DB rebuild para reduzir bloat são **grungy work** — necessários, têm valor durável, são engineering trabalho. NÃO contam como toil.
26
+ - **Automação é o objetivo, não o meio** — automatizar parcialmente (humano clica botão A, depois B, depois C) ainda é toil. Automação completa (cron + script + alert se falhar) elimina toil. Meias-medidas perpetuam.
27
+ - **Toil tax cresce com produto** — cada feature nova adiciona toil potencial: deploy manual, migration manual, feature flag rotation, customer-specific config. Prevenir > remediar — design feature considerando "como auto-operar isso?".
28
+ - **Quantificar toil em horas-pessoa** — "TOIL-AUDIT.md" deve ter coluna `hours_per_week_per_person` para cada item. Sem quantificação, "muito toil" é subjetivo e não-acionável.
29
+ - **Priorizar por (frequency × pain) / automation_effort** — P0 = alto frequency + alto pain + baixo effort. P2 = baixa frequency OU alto effort. Não automatizar tudo de uma vez — começar pelo P0.
30
+
31
+ ## Patterns canônicos
32
+
33
+ ### Pattern: decision tree para classificar trabalho
34
+
35
+ ```text
36
+ Tarefa repetitiva detectada → aplicar 6 critérios canônicos:
37
+
38
+ 1. Manual? (humano executa cada vez) ┐
39
+ 2. Repetitiva? (já fiz isso 3+ vezes) │
40
+ 3. Automatizável? (script/cron resolve sem julgamento) │── Se TODOS sim → TOIL
41
+ 4. Tática? (reage a evento, não planeja) │ → automatizar / eliminar
42
+ 5. Sem valor durável? (não cria asset permanente) │ → contar em ≤ 50% rule
43
+ 6. Escala linear? (mais users = mais trabalho) ─┘
44
+
45
+ Se NÃO for toil mas repetitivo, classificar:
46
+ - OVERHEAD (reuniões, RH, planning) → não-eliminável; NÃO conta em ≤ 50%
47
+ - GRUNGY WORK (refactor, sec cleanup) → necessário, valor durável → projeto engineering
48
+ - PROJECT WORK (criar novo serviço) → engineering trabalho ≠ toil
49
+ ```
50
+
51
+ ### Pattern: template `TOIL-AUDIT.md`
52
+
53
+ Formato canônico que `toil-auditor` (Phase 37) gera:
54
+
55
+ ```markdown
56
+ # TOIL-AUDIT — <projeto> — <data>
57
+
58
+ ## Métrica agregada
59
+
60
+ - Toil estimado: X.X horas-pessoa/semana (Y% do tempo do time)
61
+ - **Status vs ≤ 50% rule:** [GREEN: < 30%] | [YELLOW: 30-50%] | [RED: > 50%]
62
+ - Top 3 áreas: <lista>
63
+
64
+ ## Itens identificados
65
+
66
+ | # | Item | Frequência | Hours/week | Pain (1-5) | Automation effort | Priority |
67
+ |---|------|------------|------------|------------|-------------------|----------|
68
+ | 1 | Reset DB seed manual antes de cada test run | 2×/dia | 1.5 h | 4 | M (3 dias) | P0 |
69
+ | 2 | Rotation de access_token de Edge Function | 1×/semana | 0.5 h | 2 | S (1 dia) | P1 |
70
+ | 3 | Rebuild de índice fts_search após batch import | 1×/mês | 0.5 h | 3 | M (2 dias) | P1 |
71
+ | 4 | Limpeza manual de orphan rows em audit_log | 1×/semana | 0.3 h | 1 | S (1 dia) | P2 |
72
+
73
+ ## P0 (automatizar agora)
74
+
75
+ ### Item 1: Reset DB seed manual
76
+
77
+ **Por que é toil:** atende 6 critérios canônicos (manual, repetitivo 2×/dia, automatizável via script + pg_cron, tática reativa, sem valor durável, escala com #devs).
78
+
79
+ **Automação proposta:** `make db-reset` que invoca `supabase db reset && pnpm run seed`. Adicionar pre-test hook em CI.
80
+
81
+ **Esforço estimado:** 3 dias (Med — script existe parcialmente, falta seed deterministic).
82
+
83
+ **Owner sugerido:** @dev-tools-team
84
+
85
+ ## P1 / P2 (escalonar)
86
+
87
+ ...
88
+
89
+ ## Não-toil identificado
90
+
91
+ - **Overhead:** sprint planning (2h × semana × 5 pessoas = 10h/semana) — NÃO conta no ≤ 50%
92
+ - **Grungy work:** refactor de `legacy_orders_service` (8h × semana × 1 pessoa = 8h/semana) — projeto, não toil
93
+ ```
94
+
95
+ ### Pattern: estágios de automação (níveis Google)
96
+
97
+ | Estágio | Descrição | Exemplo |
98
+ |---|---|---|
99
+ | **L0: Manual** | 100% humano | "Cada deploy: SSH no host, copy binary, kill+restart" |
100
+ | **L1: Documented** | Runbook escrito; humano segue passos | "Doc passo-a-passo de deploy em wiki" |
101
+ | **L2: Tooled** | Script executa passos; humano invoca | "`./deploy.sh prod`" |
102
+ | **L3: Self-service** | UI/CLI trigger; humano clica | "GitHub Actions deploy on PR merge" |
103
+ | **L4: Autonomous** | Sem humano; só fail-state intervenção | "Auto-rollback se SLO burn rate > 4 nos primeiros 5 min após deploy" |
104
+
105
+ Meta SRE é mover toda toil de L0/L1 para L3/L4. L2 é meio-passo aceitável quando L3+ requer investimento maior. **L1 (apenas runbook) é toil disfarçado** — runbook é manual com passo extra de "ler doc".
106
+
107
+ ### Pattern: identificação de toil via git log + scripts
108
+
109
+ ```bash
110
+ # PT-BR: scripts shell em runbooks/ ou docs/runbooks/
111
+ find . -name "*.sh" -path "*runbook*" -o -path "*ops*" | head -20
112
+
113
+ # PT-BR: "manual steps" em README/docs (heurística — frase canônica)
114
+ grep -rn "manually\|por favor\|run this\|every week\|cada semana" --include="*.md" .
115
+
116
+ # PT-BR: tarefas repetitivas via git log — commits de mesmo tipo
117
+ git log --since="3 months ago" --pretty=format:"%s" | sort | uniq -c | sort -rn | head -20
118
+ # Ex: "20× Re-run failed migration in prod" → TOIL candidato
119
+ # Ex: "15× Bump deploy-token" → TOIL candidato
120
+
121
+ # PT-BR: cron jobs já automatizados (saída esperada)
122
+ crontab -l 2>/dev/null
123
+ cat /etc/cron.d/* 2>/dev/null
124
+ ```
125
+
126
+ ### Pattern: "toil tax" — prevenir feature nascer com toil
127
+
128
+ ```text
129
+ Antes de mergear PR de nova feature, perguntar:
130
+
131
+ 1. "Como auto-operar isso em prod?" → instrumentação ODD
132
+ 2. "Como auto-monitorar?" → 4 golden signals
133
+ 3. "Como auto-recuperar de fail comum?" → retry, circuit breaker
134
+ 4. "Como auto-rotacionar credenciais?" → vault + cron rotation
135
+ 5. "Como auto-limpar dados históricos?" → retention policy + scheduled cleanup
136
+ 6. "Como onboarding de novo cliente?" → self-service signup, não Slack ping
137
+
138
+ Se QUALQUER resposta = "humano fará isso" → toil tax. Bloqueie ou descontar do release budget.
139
+ ```
140
+
141
+ ## Anti-patterns
142
+
143
+ ### ANTI: confundir overhead com toil
144
+
145
+ ```text
146
+ ANTI: contar reuniões, RH, planning, performance review como toil — toda
147
+ atividade não-codificadora vira "toil" no audit.
148
+
149
+ PROBLEMA: métrica inflada (e.g., 60% "toil" falso); ações erradas — cortar
150
+ reunião não diminui toil real; equipe perde tempo em automação
151
+ de overhead (que é não-eliminável por design).
152
+
153
+ CERTO: overhead é categoria separada; ≤ 50% rule conta APENAS toil estrito
154
+ (6 critérios canônicos). Audit lista overhead em seção própria,
155
+ fora do total.
156
+ ```
157
+
158
+ ### ANTI: hero culture (toil mascara via heroísmo)
159
+
160
+ ```text
161
+ ANTI: engineer fica 2h por dia executando deploys manuais e é "celebrado
162
+ por dedicação" / "salvador" — toil nunca aparece em métrica.
163
+
164
+ PROBLEMA: toil invisível para liderança; investimento em automação adiado
165
+ indefinidamente; engineer pede demissão; sucessor herda toil sem
166
+ context — incidente garantido. Ciclo se repete.
167
+
168
+ CERTO: TOIL-AUDIT trimestral mandatório; quantificar em hours/week por
169
+ pessoa; tornar visível em dashboards de produtividade. Heroísmo
170
+ sustentado = sinal de underinvestment, não de mérito.
171
+ ```
172
+
173
+ ### ANTI: documentar runbook em vez de automatizar
174
+
175
+ ```text
176
+ ANTI: "Vamos só escrever um doc detalhado de como fazer isso passo-a-passo"
177
+ — runbook de 30 passos no wiki, sem script.
178
+
179
+ PROBLEMA: L1 (Documented) ainda é toil — humano lê doc, segue passos,
180
+ falha em algum, doc desatualiza em 3 meses; primeira pessoa que
181
+ segue após drift quebra prod; ninguém atualiza doc retroativamente.
182
+
183
+ CERTO: doc como passo intermediário (L1); meta é L3/L4 (autonomous);
184
+ marcar runbook com TODO de automação + owner + due date; sprint
185
+ seguinte transforma em script (L2) ou melhor.
186
+ ```
187
+
188
+ ### ANTI: automatizar parcialmente
189
+
190
+ ```text
191
+ ANTI: script faz 3 dos 5 passos; humano completa os outros 2 — "execute
192
+ primeiro ./step1.sh, depois manualmente faça X em prod, depois
193
+ ./step3.sh".
194
+
195
+ PROBLEMA: ainda é toil (humano envolvido); contexto-switch entre script e
196
+ humano dobra tempo total; script raramente atualizado por estar
197
+ "incompleto"; degrada para chain frágil que ninguém quer mexer.
198
+
199
+ CERTO: automação completa OU não automatizar — meias-medidas perpetuam.
200
+ Se faltam 2 passos manuais, gastar mais 1 dia para fechar o loop;
201
+ resultado é L3/L4 autônomo, não L1.5 frankenstein.
202
+ ```
203
+
204
+ ### ANTI: ignorar toil de baixa frequência
205
+
206
+ ```text
207
+ ANTI: "Só faço isso 1× por trimestre, não vale automatizar" — descartar
208
+ tarefas raras do audit.
209
+
210
+ PROBLEMA: cumulative impact alto (10 tarefas trimestrais × 4 trimestres ×
211
+ 30 min = 20h/ano); cada vez que retorna, pessoa esquece passos;
212
+ documentação envelhece entre execuções; DR exercises e migrations
213
+ raras são exatamente onde erro humano custa mais.
214
+
215
+ CERTO: priorizar por (frequency × pain) / effort; baixa frequência +
216
+ alto pain (e.g., DR exercise, schema migration crítica) = ainda
217
+ P1. Frequência baixa ≠ toil baixo — soma de raras é alta.
218
+ ```
219
+
220
+ ## Verificação
221
+
222
+ Antes de marcar audit de toil como completo:
223
+
224
+ 1. **Aplicado os 6 critérios canônicos** — cada item passou pelo decision tree (manual, repetitivo, automatizável, tático, sem valor durável, escala linear)
225
+ 2. **Quantificado em hours/week** — não "muito toil" mas "3.5h/week por pessoa"
226
+ 3. **% do tempo do time** computado — comparado contra ≤ 50% rule
227
+ 4. **Priorização por (frequency × pain) / effort** — P0/P1/P2 atribuído
228
+ 5. **Owner nomeado** para cada item P0
229
+ 6. **Overhead identificado separadamente** — não conta para ≤ 50%
230
+ 7. **Grungy work identificado separadamente** — projeto engineering, não toil
231
+ 8. **Pelo menos 1 item P0 escalonado** com automação proposta + esforço estimado
232
+
233
+ ---
234
+
235
+ ## Ver também
236
+
237
+ - [`_shared-sre/glossary.md`](../_shared-sre/glossary.md) — termos canônicos toil, overhead, grungy work, automation
238
+ - [`observability-maturity-model`](../observability-maturity-model/SKILL.md) (v1.9) — Capacidade 3 (Complexidade/Tech Debt) consome toil score
239
+ - [`production-readiness-review`](../production-readiness-review/SKILL.md) — PRR axis "Change Management" verifica deploy não é toil
240
+ - [`blameless-postmortems`](../blameless-postmortems/SKILL.md) — postmortems de toil-induced incidents alimentam audit
241
+ - [`sre-risk-management`](../sre-risk-management/SKILL.md) — toil reduz tempo para reduzir risk
242
+
243
+ *Material-fonte: Site Reliability Engineering — Beyer, Jones, Petoff, Murphy (Google/O'Reilly, 2016) — Cap 5: "Eliminating Toil".*