@luanpdd/kit-mcp 1.35.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 (117) hide show
  1. package/bin/cli.js +2 -2
  2. package/bin/mcp.js +6 -6
  3. package/bin/ui.js +74 -74
  4. package/gates/ai-prompt-stability.md +120 -120
  5. package/gates/budget-description.md +68 -68
  6. package/gates/confidence.md +29 -29
  7. package/gates/dependency-check.md +33 -33
  8. package/gates/dept-cycle-prevention.md +179 -179
  9. package/gates/golden-signals-coverage.md +133 -133
  10. package/gates/legacy-refactor-safety.md +178 -178
  11. package/gates/multi-tenant-rls-coverage.md +102 -102
  12. package/gates/no-personal-uuid.md +72 -72
  13. package/gates/obs-agents-mcp-supabase.md +86 -86
  14. package/gates/obs-skills-frontmatter.md +76 -76
  15. package/gates/observability-coverage.md +151 -151
  16. package/gates/omm-no-regression.md +83 -83
  17. package/gates/postmortem-template-required.md +127 -127
  18. package/gates/prr-checklist-coverage.md +128 -128
  19. package/gates/regression.md +32 -32
  20. package/gates/release-pipeline-policy.md +132 -132
  21. package/gates/secrets-scan.md +33 -33
  22. package/gates/service-role-not-in-user-facing.md +113 -113
  23. package/gates/skill-must-include.md +71 -71
  24. package/gates/sync-idempotent.md +62 -62
  25. package/gates/verify-phase-goal.md +34 -34
  26. package/kit/agents/designer-ui.md +216 -216
  27. package/kit/agents/workflow-generator.md +537 -167
  28. package/kit/commands/adicionar-backlog.md +1 -1
  29. package/kit/commands/adicionar-fase.md +1 -1
  30. package/kit/commands/adicionar-tarefa.md +1 -1
  31. package/kit/commands/auditar-observabilidade.md +103 -103
  32. package/kit/commands/auditar-toil.md +129 -129
  33. package/kit/commands/caracterizar-prompt.md +195 -195
  34. package/kit/commands/criar-workflow.md +158 -158
  35. package/kit/commands/definir-perfil.md +1 -1
  36. package/kit/commands/definir-slo.md +108 -108
  37. package/kit/commands/fio.md +1 -1
  38. package/kit/commands/golden-signals.md +142 -142
  39. package/kit/commands/instrumentar-fase.md +200 -200
  40. package/kit/commands/investigar-producao.md +162 -162
  41. package/kit/commands/observabilidade.md +118 -118
  42. package/kit/commands/postmortem.md +179 -179
  43. package/kit/commands/prr.md +205 -205
  44. package/kit/commands/publicar-rapido.md +207 -207
  45. package/kit/commands/risk-budget.md +220 -220
  46. package/kit/commands/sre.md +230 -230
  47. package/kit/file-manifest.json +424 -424
  48. package/kit/framework/references/output-style.md +22 -22
  49. package/kit/hooks/post-apply-migration.js +199 -199
  50. package/kit/hooks/sidecar-tool-publisher.js +210 -210
  51. package/kit/skills/_shared-dados-distribuidos/glossary.md +224 -224
  52. package/kit/skills/_shared-legacy/glossary.md +389 -389
  53. package/kit/skills/_shared-multi-tenant/glossary.md +186 -186
  54. package/kit/skills/_shared-observability/glossary.md +396 -396
  55. package/kit/skills/_shared-sre/glossary.md +712 -712
  56. package/kit/skills/_shared-supabase/glossary.md +234 -234
  57. package/kit/skills/blameless-postmortems/SKILL.md +340 -340
  58. package/kit/skills/burn-rate-alerting/SKILL.md +258 -258
  59. package/kit/skills/cascading-failures/SKILL.md +311 -311
  60. package/kit/skills/core-analysis-loop/SKILL.md +352 -352
  61. package/kit/skills/distributed-tracing/SKILL.md +362 -362
  62. package/kit/skills/dynamic-workflow-authoring/SKILL.md +327 -223
  63. package/kit/skills/eliminating-toil/SKILL.md +243 -243
  64. package/kit/skills/event-based-slos/SKILL.md +296 -296
  65. package/kit/skills/four-golden-signals/SKILL.md +314 -314
  66. package/kit/skills/hermetic-builds/SKILL.md +323 -323
  67. package/kit/skills/legacy-monster-methods/SKILL.md +444 -444
  68. package/kit/skills/llm-as-dependency/SKILL.md +436 -436
  69. package/kit/skills/load-shedding-graceful-degradation/SKILL.md +396 -396
  70. package/kit/skills/observability-driven-development/SKILL.md +315 -315
  71. package/kit/skills/observability-maturity-model/SKILL.md +222 -222
  72. package/kit/skills/opentelemetry-standard/SKILL.md +351 -351
  73. package/kit/skills/production-readiness-review/SKILL.md +305 -305
  74. package/kit/skills/release-engineering/SKILL.md +367 -367
  75. package/kit/skills/retry-strategies/SKILL.md +372 -372
  76. package/kit/skills/sre-risk-management/SKILL.md +221 -221
  77. package/kit/skills/structured-events/SKILL.md +265 -265
  78. package/kit/skills/supabase-cron-queues/SKILL.md +275 -275
  79. package/kit/skills/supabase-database-functions/SKILL.md +332 -332
  80. package/kit/skills/supabase-declarative-schema/SKILL.md +183 -183
  81. package/kit/skills/supabase-pgvector-rag/SKILL.md +253 -253
  82. package/kit/skills/supabase-postgres-style/SKILL.md +138 -138
  83. package/kit/skills/supabase-storage/SKILL.md +234 -234
  84. package/kit/skills/telemetry-pipelines/SKILL.md +259 -259
  85. package/kit/skills/telemetry-sampling/SKILL.md +256 -256
  86. package/kit/skills/ui-anti-padroes-ia/SKILL.md +261 -261
  87. package/kit/skills/ui-contexto-produto/SKILL.md +248 -248
  88. package/kit/skills/ui-cor-estrategia/SKILL.md +213 -213
  89. package/kit/skills/ui-critica-auditoria/SKILL.md +260 -260
  90. package/kit/skills/ui-motion-funcional/SKILL.md +264 -264
  91. package/kit/skills/ui-ritmo-espacial/SKILL.md +259 -259
  92. package/kit/skills/ui-tipografia/SKILL.md +211 -211
  93. package/package.json +1 -1
  94. package/src/cli/index.js +1114 -1114
  95. package/src/cli/render.js +194 -194
  96. package/src/cli/upgrade-check.js +135 -135
  97. package/src/core/error-redaction.js +76 -76
  98. package/src/core/failures.js +153 -153
  99. package/src/core/gate-runner.js +205 -205
  100. package/src/core/gates.js +82 -82
  101. package/src/core/logger.js +170 -170
  102. package/src/core/manifest-verify.js +174 -174
  103. package/src/core/metrics.js +268 -268
  104. package/src/core/notify.js +60 -60
  105. package/src/core/path-safety.js +141 -141
  106. package/src/core/replays.js +120 -120
  107. package/src/core/ui.js +185 -185
  108. package/src/mcp-server/install.js +149 -149
  109. package/src/mcp-server/roots.js +124 -124
  110. package/src/ui/auto-spawn.js +113 -113
  111. package/src/ui/browser.js +78 -78
  112. package/src/ui/client.js +130 -130
  113. package/src/ui/events.js +65 -65
  114. package/src/ui/lockfile.js +191 -191
  115. package/src/ui/port.js +67 -67
  116. package/src/ui/server.js +547 -547
  117. package/src/ui/wrapper.js +129 -129
@@ -1,205 +1,205 @@
1
- ---
2
- name: prr
3
- description: Invoca prr-conductor — Production Readiness Review scored em 6 axes (cap 32); modos --service <name> ou --feature <desc>; offline fallback se MCP ausente.
4
- argument-hint: "(--service <name> | --feature \"<desc>\") [--engagement simple|early|platform] [--reviewer @sre]"
5
- allowed-tools:
6
- - Read
7
- - Write
8
- - Bash
9
- - Grep
10
- - Glob
11
- - Task
12
- - AskUserQuestion
13
- ---
14
-
15
- <objective>
16
- Conduzir **Production Readiness Review** (PRR — cap 32 do livro Google SRE) para serviço/feature antes de production. Invoca o agente [`prr-conductor`](../agents/prr-conductor.md) que aplica a skill [`production-readiness-review`](../skills/production-readiness-review/SKILL.md) — checklist canônico **6 axes** + **3 engagement models** + handoff dev→SRE.
17
-
18
- **6 axes obrigatórios** (pular um = aprovação inválida):
19
- 1. System Architecture — design, dependencies, blast radius, isolation
20
- 2. Instrumentation/Metrics/Monitoring — 4 golden signals, SLOs, alerting
21
- 3. Emergency Response — runbooks, on-call, rollback, communication
22
- 4. Capacity Planning — load testing, scaling, headroom
23
- 5. Change Management — canary, feature flags, rollback < 60s
24
- 6. Performance — latency budgets, throughput, optimization
25
-
26
- **Cria/Atualiza:**
27
- - `.planning/prr/<service>.md` (Modo A) OR `.planning/prr/feature-<slug>.md` (Modo B) — PRR-REPORT.md scored
28
-
29
- **Após:** o user tem decisão `Approved` / `Approved with conditions` / `Blocked` + lista canônica de P0 items por axe + reviewer signature. Phase 40 INT-FW-V2-02 integra `/concluir-marco` com gate PRR opcional.
30
- </objective>
31
-
32
- <context>
33
- **Argumentos:** `$ARGUMENTS` — comando suporta **2 modos mutuamente exclusivos**.
34
-
35
- **Modo A: `--service <name>` (audit de serviço existente)**
36
-
37
- Para serviços já em production OU prestes a entrar — agent lê schema (Supabase MCP), Edge Functions code, SLOs definidos (`.planning/slos/`), advisors. Output: `.planning/prr/<service>.md`.
38
-
39
- **Modo B: `--feature <description>` (audit pré-launch)**
40
-
41
- Para feature em design/dev — agent lê design docs, SLOs propostos, código WIP. Output: `.planning/prr/feature-<slug>.md`.
42
-
43
- **Engagement models (cap 32):**
44
- - `simple` — outage cost < $1k/min OR internal tool — 4-8h, 1 sessão
45
- - `early` — outage cost $1k-100k/min OR customer-facing — semanas, SRE no design
46
- - `platform` — outage cost > $100k/min OR built on Frameworks/SRE Platform — PRR é confirmação
47
-
48
- **Flags:**
49
- - `--engagement <simple|early|platform>` — engagement model (default: AskUserQuestion baseado em outage cost)
50
- - `--reviewer <@handle>` — handle do reviewer SRE (default: AskUserQuestion — **NUNCA pode ser team dev**, anti-pattern auto-PRR)
51
- - `--outage-cost <usd>` — custo de outage por minuto (default: AskUserQuestion para escolher engagement)
52
- - `--output <path>` — caminho do output (override de default canônico)
53
-
54
- **Exemplos:**
55
- ```
56
- /prr --service orders-api # Modo A — defaults
57
- /prr --service orders-api --engagement early --reviewer @ops-lead # Modo A com config
58
- /prr --feature "RAG sobre documentos privados" --reviewer @sre # Modo B
59
- /prr --service edge-process-emails --engagement simple # Edge Function simples
60
- ```
61
-
62
- **Pré-requisito (Full mode):** projeto Supabase configurado, `mcp__supabase__*` disponível. Modo offline funciona com fallback graceful (filesystem only — itens MCP-dependentes ficam `EVIDENCE_PENDING_MCP`).
63
- </context>
64
-
65
- <process>
66
-
67
- ## 1. Parsear argumentos (2 modos)
68
-
69
- ```bash
70
- SERVICE=$(echo "$ARGUMENTS" | grep -oE -- '--service [^ ]+' | awk '{print $2}')
71
- FEATURE=$(echo "$ARGUMENTS" | grep -oE -- '--feature "[^"]+"' | sed 's/--feature //; s/^"//; s/"$//')
72
- ENGAGEMENT=$(echo "$ARGUMENTS" | grep -oE -- '--engagement [^ ]+' | awk '{print $2}')
73
- REVIEWER=$(echo "$ARGUMENTS" | grep -oE -- '--reviewer [^ ]+' | awk '{print $2}')
74
- OUTAGE_COST=$(echo "$ARGUMENTS" | grep -oE -- '--outage-cost [^ ]+' | awk '{print $2}')
75
- OUTPUT_PATH=$(echo "$ARGUMENTS" | grep -oE -- '--output [^ ]+' | awk '{print $2}')
76
-
77
- # PT-BR: validar mutuamente exclusivos
78
- if [ -n "$SERVICE" ] && [ -n "$FEATURE" ]; then
79
- echo "✗ Erro: --service e --feature são mutuamente exclusivos. Escolha um."
80
- exit 1
81
- fi
82
-
83
- # PT-BR: nenhum dos 2 → erro com sugestão
84
- if [ -z "$SERVICE" ] && [ -z "$FEATURE" ]; then
85
- echo "✗ Forneça --service <name> OU --feature \"<descrição>\""
86
- echo " Exemplos:"
87
- echo " /prr --service orders-api"
88
- echo " /prr --feature \"RAG sobre documentos privados\""
89
- exit 1
90
- fi
91
- ```
92
-
93
- ## 2. Resolver output_path + idempotência
94
-
95
- ```bash
96
- if [ -n "$SERVICE" ]; then
97
- [ -z "$OUTPUT_PATH" ] && OUTPUT_PATH=".planning/prr/${SERVICE}.md"
98
- else
99
- SLUG=$(echo "$FEATURE" | tr ' ' '-' | tr -cd 'a-zA-Z0-9-' | head -c 30 | sed 's/-$//')
100
- [ -z "$OUTPUT_PATH" ] && OUTPUT_PATH=".planning/prr/feature-${SLUG}.md"
101
- fi
102
- mkdir -p "$(dirname "$OUTPUT_PATH")"
103
-
104
- # PT-BR: PRR pode ser re-PRR (após mudança grande) — informar mas permitir
105
- if [ -f "$OUTPUT_PATH" ]; then
106
- LAST_DATE=$(grep -m1 '**Date:**' "$OUTPUT_PATH" 2>/dev/null | sed 's/.*Date:\*\* //' || echo "?")
107
- echo "ℹ PRR-REPORT.md anterior detectado ($LAST_DATE) em $OUTPUT_PATH."
108
- echo " Re-PRR válido (após mudança grande, incident, ou anual). Continuando — vai sobrescrever."
109
- fi
110
- ```
111
-
112
- ## 3. Detectar `supabase/config.toml` (Full mode)
113
-
114
- ```bash
115
- PROJECT_ID=""
116
- if [ -f supabase/config.toml ]; then
117
- PROJECT_ID=$(grep -E '^project_id\s*=' supabase/config.toml | sed 's/.*= *"\(.*\)".*/\1/' | head -1)
118
- echo "✓ project_id detectado: $PROJECT_ID (Full mode com MCP Supabase)"
119
- else
120
- echo "ℹ Sem supabase/config.toml — agent pode rodar em modo offline (fallback graceful)"
121
- fi
122
- ```
123
-
124
- ## 4. AskUserQuestion — engagement model + reviewer
125
-
126
- Se `--engagement` não fornecido E `--outage-cost` ausente:
127
-
128
- > **AskUserQuestion**
129
- > header: "PRR Engagement Model"
130
- > question: "Qual custo estimado de outage para este target?"
131
- > options:
132
- > - "< $1k/min OR internal tool → Simple PRR (4-8h, 1 sessão)"
133
- > - "$1k-100k/min OR customer-facing → Early Engagement (semanas, SRE no design)"
134
- > - "> $100k/min OR built on platform → Frameworks/Platform (PRR é confirmação)"
135
-
136
- Se `--reviewer` não fornecido (anti-pattern auto-PRR):
137
-
138
- > **AskUserQuestion**
139
- > header: "PRR Reviewer (anti auto-PRR)"
140
- > question: "Quem é o reviewer? Reviewer DEVE ser SRE OU par externo ao time dev (anti-pattern: time dev faz auto-PRR — confirmation bias)."
141
- > options: (texto livre — handle/email)
142
-
143
- ## 5. Dispatch para `prr-conductor`
144
-
145
- ```text
146
- Task(
147
- subagent_type="prr-conductor",
148
- prompt="
149
- ${SERVICE:+service_name: ${SERVICE}}
150
- ${FEATURE:+feature_description: ${FEATURE}}
151
- output_path: ${OUTPUT_PATH}
152
- ${ENGAGEMENT:+engagement_model: ${ENGAGEMENT}}
153
- ${REVIEWER:+reviewer: ${REVIEWER}}
154
- ${OUTAGE_COST:+outage_cost_per_min: ${OUTAGE_COST}}
155
- ${PROJECT_ID:+project_id: ${PROJECT_ID}}
156
-
157
- Aplicar skill production-readiness-review. Audit em 6 axes (todos obrigatórios — pular = inválido):
158
- 1. System Architecture — design, dependencies, blast radius, isolation, single points of failure
159
- 2. Instrumentation/Metrics/Monitoring — 4 golden signals, SLOs definidos, alerting com burn rates
160
- 3. Emergency Response — runbooks atualizados, on-call rotation, rollback < 60s, communication plan
161
- 4. Capacity Planning — load testing recente, scaling docs, headroom % atual vs peak
162
- 5. Change Management — canary deployment, feature flags, rollback drills
163
- 6. Performance — latency p50/p95/p99 vs budget, throughput vs target, optimization headroom
164
-
165
- Padrão obrigatório: cada item evidence-based (NÃO 'acreditamos que está pronto' — exigir query/log/runbook/test).
166
- Modo offline: se MCP ausente, declarar [MODO OFFLINE] e marcar items MCP-dependentes EVIDENCE_PENDING_MCP.
167
- Output: PRR-REPORT.md com scoring 0-5 por axe + status Pass/Pass with gaps/Fail + decisão Approved/Approved with conditions/Blocked + reviewer signature + Re-PRR triggers.
168
- "
169
- )
170
- ```
171
-
172
- ## 6. Pós-output
173
-
174
- ```
175
- ═══════════════════════════════════════════════════════════
176
- framework ► PRR ▸ ${SERVICE:-feature-${SLUG}}
177
- ═══════════════════════════════════════════════════════════
178
-
179
- [output do prr-conductor — ver Step 3 do agent]
180
-
181
- ## Estado salvo
182
- ${OUTPUT_PATH}
183
-
184
- ## Próximos passos
185
- 1. Reviewer (`${REVIEWER}`) precisa assinar — anti-pattern: rubber stamp sem ler evidence
186
- 2. P0 items são bloqueadores; P1 items são conditions; P2 items são monitoramento
187
- 3. Re-PRR triggers (anual, mudança arquitetural grande, incident SEV1+) — agendar
188
- 4. Se status `Approved` → liberar para production; se `Blocked` → fechar P0s antes de re-submit
189
- 5. Cross-ref OMM: PRR alimenta Capacidade 4 (Production Readiness) — `/observabilidade omm`
190
- 6. Phase 40 INT-FW-V2-02: `/concluir-marco` pode exigir PRR `Approved` se `workflow.complete_milestone_prr_gate=true`
191
- ```
192
-
193
- </process>
194
-
195
- <success_criteria>
196
- - [ ] `--service <name>` E `--feature "<desc>"` parseados (mutuamente exclusivos)
197
- - [ ] Modo A: output canônico `.planning/prr/<service>.md` (override via `--output`)
198
- - [ ] Modo B: output canônico `.planning/prr/feature-<slug>.md` (slug auto-gerado)
199
- - [ ] Re-PRR não-bloqueante (informa mas permite — re-PRR é válido após mudança grande)
200
- - [ ] `supabase/config.toml` detectado para passar `project_id` (Full mode)
201
- - [ ] AskUserQuestion para engagement model (se ausente) E reviewer (se ausente — anti auto-PRR)
202
- - [ ] `prr-conductor` invocado via `Task(subagent_type=...)` com prompt completo (6 axes literalmente + modo offline)
203
- - [ ] Output forwarded transparentemente do agent
204
- - [ ] Próximos passos sugerem cross-ref para `/observabilidade omm`, `/concluir-marco`, P0/P1/P2 priorização
205
- </success_criteria>
1
+ ---
2
+ name: prr
3
+ description: Invoca prr-conductor — Production Readiness Review scored em 6 axes (cap 32); modos --service <name> ou --feature <desc>; offline fallback se MCP ausente.
4
+ argument-hint: "(--service <name> | --feature \"<desc>\") [--engagement simple|early|platform] [--reviewer @sre]"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Bash
9
+ - Grep
10
+ - Glob
11
+ - Task
12
+ - AskUserQuestion
13
+ ---
14
+
15
+ <objective>
16
+ Conduzir **Production Readiness Review** (PRR — cap 32 do livro Google SRE) para serviço/feature antes de production. Invoca o agente [`prr-conductor`](../agents/prr-conductor.md) que aplica a skill [`production-readiness-review`](../skills/production-readiness-review/SKILL.md) — checklist canônico **6 axes** + **3 engagement models** + handoff dev→SRE.
17
+
18
+ **6 axes obrigatórios** (pular um = aprovação inválida):
19
+ 1. System Architecture — design, dependencies, blast radius, isolation
20
+ 2. Instrumentation/Metrics/Monitoring — 4 golden signals, SLOs, alerting
21
+ 3. Emergency Response — runbooks, on-call, rollback, communication
22
+ 4. Capacity Planning — load testing, scaling, headroom
23
+ 5. Change Management — canary, feature flags, rollback < 60s
24
+ 6. Performance — latency budgets, throughput, optimization
25
+
26
+ **Cria/Atualiza:**
27
+ - `.planning/prr/<service>.md` (Modo A) OR `.planning/prr/feature-<slug>.md` (Modo B) — PRR-REPORT.md scored
28
+
29
+ **Após:** o user tem decisão `Approved` / `Approved with conditions` / `Blocked` + lista canônica de P0 items por axe + reviewer signature. Phase 40 INT-FW-V2-02 integra `/concluir-marco` com gate PRR opcional.
30
+ </objective>
31
+
32
+ <context>
33
+ **Argumentos:** `$ARGUMENTS` — comando suporta **2 modos mutuamente exclusivos**.
34
+
35
+ **Modo A: `--service <name>` (audit de serviço existente)**
36
+
37
+ Para serviços já em production OU prestes a entrar — agent lê schema (Supabase MCP), Edge Functions code, SLOs definidos (`.planning/slos/`), advisors. Output: `.planning/prr/<service>.md`.
38
+
39
+ **Modo B: `--feature <description>` (audit pré-launch)**
40
+
41
+ Para feature em design/dev — agent lê design docs, SLOs propostos, código WIP. Output: `.planning/prr/feature-<slug>.md`.
42
+
43
+ **Engagement models (cap 32):**
44
+ - `simple` — outage cost < $1k/min OR internal tool — 4-8h, 1 sessão
45
+ - `early` — outage cost $1k-100k/min OR customer-facing — semanas, SRE no design
46
+ - `platform` — outage cost > $100k/min OR built on Frameworks/SRE Platform — PRR é confirmação
47
+
48
+ **Flags:**
49
+ - `--engagement <simple|early|platform>` — engagement model (default: AskUserQuestion baseado em outage cost)
50
+ - `--reviewer <@handle>` — handle do reviewer SRE (default: AskUserQuestion — **NUNCA pode ser team dev**, anti-pattern auto-PRR)
51
+ - `--outage-cost <usd>` — custo de outage por minuto (default: AskUserQuestion para escolher engagement)
52
+ - `--output <path>` — caminho do output (override de default canônico)
53
+
54
+ **Exemplos:**
55
+ ```
56
+ /prr --service orders-api # Modo A — defaults
57
+ /prr --service orders-api --engagement early --reviewer @ops-lead # Modo A com config
58
+ /prr --feature "RAG sobre documentos privados" --reviewer @sre # Modo B
59
+ /prr --service edge-process-emails --engagement simple # Edge Function simples
60
+ ```
61
+
62
+ **Pré-requisito (Full mode):** projeto Supabase configurado, `mcp__supabase__*` disponível. Modo offline funciona com fallback graceful (filesystem only — itens MCP-dependentes ficam `EVIDENCE_PENDING_MCP`).
63
+ </context>
64
+
65
+ <process>
66
+
67
+ ## 1. Parsear argumentos (2 modos)
68
+
69
+ ```bash
70
+ SERVICE=$(echo "$ARGUMENTS" | grep -oE -- '--service [^ ]+' | awk '{print $2}')
71
+ FEATURE=$(echo "$ARGUMENTS" | grep -oE -- '--feature "[^"]+"' | sed 's/--feature //; s/^"//; s/"$//')
72
+ ENGAGEMENT=$(echo "$ARGUMENTS" | grep -oE -- '--engagement [^ ]+' | awk '{print $2}')
73
+ REVIEWER=$(echo "$ARGUMENTS" | grep -oE -- '--reviewer [^ ]+' | awk '{print $2}')
74
+ OUTAGE_COST=$(echo "$ARGUMENTS" | grep -oE -- '--outage-cost [^ ]+' | awk '{print $2}')
75
+ OUTPUT_PATH=$(echo "$ARGUMENTS" | grep -oE -- '--output [^ ]+' | awk '{print $2}')
76
+
77
+ # PT-BR: validar mutuamente exclusivos
78
+ if [ -n "$SERVICE" ] && [ -n "$FEATURE" ]; then
79
+ echo "✗ Erro: --service e --feature são mutuamente exclusivos. Escolha um."
80
+ exit 1
81
+ fi
82
+
83
+ # PT-BR: nenhum dos 2 → erro com sugestão
84
+ if [ -z "$SERVICE" ] && [ -z "$FEATURE" ]; then
85
+ echo "✗ Forneça --service <name> OU --feature \"<descrição>\""
86
+ echo " Exemplos:"
87
+ echo " /prr --service orders-api"
88
+ echo " /prr --feature \"RAG sobre documentos privados\""
89
+ exit 1
90
+ fi
91
+ ```
92
+
93
+ ## 2. Resolver output_path + idempotência
94
+
95
+ ```bash
96
+ if [ -n "$SERVICE" ]; then
97
+ [ -z "$OUTPUT_PATH" ] && OUTPUT_PATH=".planning/prr/${SERVICE}.md"
98
+ else
99
+ SLUG=$(echo "$FEATURE" | tr ' ' '-' | tr -cd 'a-zA-Z0-9-' | head -c 30 | sed 's/-$//')
100
+ [ -z "$OUTPUT_PATH" ] && OUTPUT_PATH=".planning/prr/feature-${SLUG}.md"
101
+ fi
102
+ mkdir -p "$(dirname "$OUTPUT_PATH")"
103
+
104
+ # PT-BR: PRR pode ser re-PRR (após mudança grande) — informar mas permitir
105
+ if [ -f "$OUTPUT_PATH" ]; then
106
+ LAST_DATE=$(grep -m1 '**Date:**' "$OUTPUT_PATH" 2>/dev/null | sed 's/.*Date:\*\* //' || echo "?")
107
+ echo "ℹ PRR-REPORT.md anterior detectado ($LAST_DATE) em $OUTPUT_PATH."
108
+ echo " Re-PRR válido (após mudança grande, incident, ou anual). Continuando — vai sobrescrever."
109
+ fi
110
+ ```
111
+
112
+ ## 3. Detectar `supabase/config.toml` (Full mode)
113
+
114
+ ```bash
115
+ PROJECT_ID=""
116
+ if [ -f supabase/config.toml ]; then
117
+ PROJECT_ID=$(grep -E '^project_id\s*=' supabase/config.toml | sed 's/.*= *"\(.*\)".*/\1/' | head -1)
118
+ echo "✓ project_id detectado: $PROJECT_ID (Full mode com MCP Supabase)"
119
+ else
120
+ echo "ℹ Sem supabase/config.toml — agent pode rodar em modo offline (fallback graceful)"
121
+ fi
122
+ ```
123
+
124
+ ## 4. AskUserQuestion — engagement model + reviewer
125
+
126
+ Se `--engagement` não fornecido E `--outage-cost` ausente:
127
+
128
+ > **AskUserQuestion**
129
+ > header: "PRR Engagement Model"
130
+ > question: "Qual custo estimado de outage para este target?"
131
+ > options:
132
+ > - "< $1k/min OR internal tool → Simple PRR (4-8h, 1 sessão)"
133
+ > - "$1k-100k/min OR customer-facing → Early Engagement (semanas, SRE no design)"
134
+ > - "> $100k/min OR built on platform → Frameworks/Platform (PRR é confirmação)"
135
+
136
+ Se `--reviewer` não fornecido (anti-pattern auto-PRR):
137
+
138
+ > **AskUserQuestion**
139
+ > header: "PRR Reviewer (anti auto-PRR)"
140
+ > question: "Quem é o reviewer? Reviewer DEVE ser SRE OU par externo ao time dev (anti-pattern: time dev faz auto-PRR — confirmation bias)."
141
+ > options: (texto livre — handle/email)
142
+
143
+ ## 5. Dispatch para `prr-conductor`
144
+
145
+ ```text
146
+ Task(
147
+ subagent_type="prr-conductor",
148
+ prompt="
149
+ ${SERVICE:+service_name: ${SERVICE}}
150
+ ${FEATURE:+feature_description: ${FEATURE}}
151
+ output_path: ${OUTPUT_PATH}
152
+ ${ENGAGEMENT:+engagement_model: ${ENGAGEMENT}}
153
+ ${REVIEWER:+reviewer: ${REVIEWER}}
154
+ ${OUTAGE_COST:+outage_cost_per_min: ${OUTAGE_COST}}
155
+ ${PROJECT_ID:+project_id: ${PROJECT_ID}}
156
+
157
+ Aplicar skill production-readiness-review. Audit em 6 axes (todos obrigatórios — pular = inválido):
158
+ 1. System Architecture — design, dependencies, blast radius, isolation, single points of failure
159
+ 2. Instrumentation/Metrics/Monitoring — 4 golden signals, SLOs definidos, alerting com burn rates
160
+ 3. Emergency Response — runbooks atualizados, on-call rotation, rollback < 60s, communication plan
161
+ 4. Capacity Planning — load testing recente, scaling docs, headroom % atual vs peak
162
+ 5. Change Management — canary deployment, feature flags, rollback drills
163
+ 6. Performance — latency p50/p95/p99 vs budget, throughput vs target, optimization headroom
164
+
165
+ Padrão obrigatório: cada item evidence-based (NÃO 'acreditamos que está pronto' — exigir query/log/runbook/test).
166
+ Modo offline: se MCP ausente, declarar [MODO OFFLINE] e marcar items MCP-dependentes EVIDENCE_PENDING_MCP.
167
+ Output: PRR-REPORT.md com scoring 0-5 por axe + status Pass/Pass with gaps/Fail + decisão Approved/Approved with conditions/Blocked + reviewer signature + Re-PRR triggers.
168
+ "
169
+ )
170
+ ```
171
+
172
+ ## 6. Pós-output
173
+
174
+ ```
175
+ ═══════════════════════════════════════════════════════════
176
+ framework ► PRR ▸ ${SERVICE:-feature-${SLUG}}
177
+ ═══════════════════════════════════════════════════════════
178
+
179
+ [output do prr-conductor — ver Step 3 do agent]
180
+
181
+ ## Estado salvo
182
+ ${OUTPUT_PATH}
183
+
184
+ ## Próximos passos
185
+ 1. Reviewer (`${REVIEWER}`) precisa assinar — anti-pattern: rubber stamp sem ler evidence
186
+ 2. P0 items são bloqueadores; P1 items são conditions; P2 items são monitoramento
187
+ 3. Re-PRR triggers (anual, mudança arquitetural grande, incident SEV1+) — agendar
188
+ 4. Se status `Approved` → liberar para production; se `Blocked` → fechar P0s antes de re-submit
189
+ 5. Cross-ref OMM: PRR alimenta Capacidade 4 (Production Readiness) — `/observabilidade omm`
190
+ 6. Phase 40 INT-FW-V2-02: `/concluir-marco` pode exigir PRR `Approved` se `workflow.complete_milestone_prr_gate=true`
191
+ ```
192
+
193
+ </process>
194
+
195
+ <success_criteria>
196
+ - [ ] `--service <name>` E `--feature "<desc>"` parseados (mutuamente exclusivos)
197
+ - [ ] Modo A: output canônico `.planning/prr/<service>.md` (override via `--output`)
198
+ - [ ] Modo B: output canônico `.planning/prr/feature-<slug>.md` (slug auto-gerado)
199
+ - [ ] Re-PRR não-bloqueante (informa mas permite — re-PRR é válido após mudança grande)
200
+ - [ ] `supabase/config.toml` detectado para passar `project_id` (Full mode)
201
+ - [ ] AskUserQuestion para engagement model (se ausente) E reviewer (se ausente — anti auto-PRR)
202
+ - [ ] `prr-conductor` invocado via `Task(subagent_type=...)` com prompt completo (6 axes literalmente + modo offline)
203
+ - [ ] Output forwarded transparentemente do agent
204
+ - [ ] Próximos passos sugerem cross-ref para `/observabilidade omm`, `/concluir-marco`, P0/P1/P2 priorização
205
+ </success_criteria>