@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,158 +1,158 @@
1
- ---
2
- name: criar-workflow
3
- description: Gera um Dynamic Workflow customizado pro teu projeto. Pergunta o padrao de harness (6 opcoes), eliciaa params especificos, compoe reusando agents/skills do kit, materializa em .claude/workflows/.
4
- argument-hint: "<descricao livre em portugues do que voce quer auditar/automatizar>"
5
- allowed-tools:
6
- - Read
7
- - Write
8
- - Bash
9
- - Grep
10
- - Glob
11
- - AskUserQuestion
12
- - Task
13
- ---
14
-
15
- # criar-workflow
16
-
17
- > Entrypoint pra gerar um Dynamic Workflow customizado pro teu projeto. O kit não cresce com workflows de nicho — cresce com a capacidade de gerar workflows sob demanda.
18
-
19
- > Cada usuário ganha o DELE, calibrado pro stack/dor que ele tem. Outro usuário com necessidade diferente roda `/criar-workflow <sua descrição>` e ganha um diferente.
20
-
21
- <objective>
22
- Invoca o agent [`workflow-generator`](../agents/workflow-generator.md) que executa 4 layers:
23
-
24
- 1. **Classify** — pergunta qual dos 6 patterns canônicos (Classify-Act, Fanout-Synthesize, Adversarial-Verify, Generate-Filter, Tournament, Loop-Done) encaixa
25
- 2. **Specify** — faz 2-4 perguntas específicas do pattern escolhido
26
- 3. **Compose** — detecta MCP necessárias + propõe reuso de agents canônicos do kit
27
- 4. **Materialize** — escreve `.claude/workflows/<slug>.workflow.js` + `.claude/commands/<slug>.md` (locais ao projeto, NUNCA no kit canônico)
28
-
29
- **Cria:**
30
- - `.claude/workflows/<slug>.workflow.js` — script JS executável pela tool Workflow do Claude Code
31
- - `.claude/commands/<slug>.md` — slash-command que dispara o workflow
32
-
33
- **Após:** `/<slug> [--args]` invoca direto. Pra rodar a cada N minutos: `/loop 3m /<slug>`. Pra cron remoto: `/schedule "*/3 * * * *" <slug>`.
34
- </objective>
35
-
36
- <context>
37
- **Argumento:**
38
- - `$ARGUMENTS` — descrição livre em português do objetivo. Quanto mais específico, menos perguntas o gerador faz no Layer 1.
39
-
40
- **Exemplos:**
41
- ```
42
- /criar-workflow auditar comportamento dos agentes IA atendendo WhatsApp
43
- a cada 3 minutos, analisar transcripts e gerar report
44
-
45
- /criar-workflow rankear top 10 PRs no GitHub abertos ha mais de 7 dias
46
- sem revisao por impacto
47
-
48
- /criar-workflow bug hunt continuo no codigo do servico de pagamento
49
- ate 2 rounds sem novos achados
50
-
51
- /criar-workflow brainstorm 12 nomes pra minha CLI e pegar top 3 por
52
- memorability + brand fit
53
- ```
54
-
55
- **Pré-requisitos:**
56
- - Claude Code Max / Team / Enterprise (Dynamic Workflows em research preview Opus 4.8+)
57
- - Tool `Workflow` habilitada na sessão
58
- - `.claude/workflows/` existe ou sera criado
59
-
60
- **Quando NÃO usar:**
61
- - Tarefa cabe em 1 slash-command existente (ex.: ja temos `/auditar-observabilidade-cobertura-workflow` — não duplique)
62
- - Descrição vaga ("automatize meu projeto") — refine antes
63
- - Mudança que precisa entrar no kit canônico — esses são PRs no repo `luanpdd/kit-mcp`, não workflows locais
64
- </context>
65
-
66
- <process>
67
-
68
- ## 1. Validar descrição mínima
69
-
70
- ```bash
71
- DESC="$ARGUMENTS"
72
- if [ -z "$DESC" ] || [ ${#DESC} -lt 10 ]; then
73
- echo "ERRO: descreva o que voce quer com pelo menos 10 chars."
74
- echo "Exemplo: /criar-workflow auditar conversas IA no WhatsApp a cada 3min"
75
- exit 1
76
- fi
77
- ```
78
-
79
- ## 2. Garantir destino existe
80
-
81
- ```bash
82
- mkdir -p .claude/workflows .claude/commands
83
- ```
84
-
85
- ## 3. Dispatch para workflow-generator
86
-
87
- ```text
88
- Task(
89
- subagent_type="workflow-generator",
90
- prompt="
91
- description: ${DESC}
92
- output_dir_workflows: .claude/workflows/
93
- output_dir_commands: .claude/commands/
94
-
95
- Execute os 4 layers conforme spec do agent:
96
-
97
- LAYER 0 — Classify (AskUserQuestion obrigatorio, 6 opcoes do pattern)
98
- LAYER 1 — Specify (perguntas especificas do pattern escolhido, 2-4 max)
99
- LAYER 2 — Compose (detectar MCP + propor reuso de agents do kit via AskUserQuestion)
100
- LAYER 3 — Materialize (.workflow.js + .md com header // kit-mcp:user-generated)
101
- LAYER 4 — Deliver (output formatado com slug, pattern, MCP, comandos /<slug>, /loop, /schedule)
102
-
103
- REGRAS DURAS:
104
- - meta literal puro (sem template literals, sem function calls, sem spread)
105
- - Todo agent() com schema JSON Schema declarado (required: [...])
106
- - pipeline() default, parallel() so com justificativa inline
107
- - Sem Date.now()/Math.random()/argless new Date() — pra randomness varie por indice, pra timestamps passe via args
108
- - Header // kit-mcp:user-generated no topo do .workflow.js (distingue de // kit-mcp:reference do canonico)
109
-
110
- NAO escreva em kit/ — workflows gerados sao locais.
111
- "
112
- )
113
- ```
114
-
115
- ## 4. Pós-output
116
-
117
- ```
118
- ═══════════════════════════════════════════════════════════
119
- framework ► CRIAR-WORKFLOW ▸ <slug>
120
- ═══════════════════════════════════════════════════════════
121
-
122
- [output do workflow-generator]
123
-
124
- ## Como usar
125
-
126
- ```
127
- /<slug> [--args ...] # 1 execucao
128
- /loop 3m /<slug> [--args ...] # a cada 3min (dentro da sessao)
129
- /schedule "*/3 * * * *" <slug> [--args] # cron remoto (24/7)
130
- ```
131
-
132
- ## Editar depois
133
-
134
- Se quiser ajustar:
135
- - `.claude/workflows/<slug>.workflow.js` — script do workflow
136
- - `.claude/commands/<slug>.md` — slash-command (interface + flags)
137
-
138
- A tool Workflow do Claude Code re-le o script a cada execucao — edit ja vale na proxima rodada.
139
-
140
- ## Quando descontinuar
141
-
142
- Apaga os 2 arquivos. Sem efeito colateral (workflows user-generated nao entram no kit/file-manifest.json nem no kit-mcp sync).
143
- ```
144
-
145
- </process>
146
-
147
- <success_criteria>
148
- - [ ] `$ARGUMENTS` validado (≥ 10 chars)
149
- - [ ] `.claude/workflows/` e `.claude/commands/` criados se ausentes
150
- - [ ] `workflow-generator` invocado via `Task()` com a descrição original
151
- - [ ] Layer 0 (classify pattern) com `AskUserQuestion` obrigatório — NUNCA infere
152
- - [ ] Layer 1 (specify) com perguntas específicas DO PADRÃO ESCOLHIDO — não pergunta tudo sempre
153
- - [ ] Layer 2 (compose) propõe reuso de agents canônicos quando match óbvio
154
- - [ ] Layer 3 (materialize) escreve 2 arquivos com headers corretos
155
- - [ ] Layer 4 (deliver) output com `/<slug>`, `/loop`, `/schedule` formatados
156
- - [ ] Workflow gerado parseável (`node -c` syntax check)
157
- - [ ] Nenhum arquivo escrito em `kit/` (canônico) — só em `.claude/`
158
- </success_criteria>
1
+ ---
2
+ name: criar-workflow
3
+ description: Gera um Dynamic Workflow customizado pro teu projeto. Pergunta o padrao de harness (6 opcoes), eliciaa params especificos, compoe reusando agents/skills do kit, materializa em .claude/workflows/.
4
+ argument-hint: "<descricao livre em portugues do que voce quer auditar/automatizar>"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Bash
9
+ - Grep
10
+ - Glob
11
+ - AskUserQuestion
12
+ - Task
13
+ ---
14
+
15
+ # criar-workflow
16
+
17
+ > Entrypoint pra gerar um Dynamic Workflow customizado pro teu projeto. O kit não cresce com workflows de nicho — cresce com a capacidade de gerar workflows sob demanda.
18
+
19
+ > Cada usuário ganha o DELE, calibrado pro stack/dor que ele tem. Outro usuário com necessidade diferente roda `/criar-workflow <sua descrição>` e ganha um diferente.
20
+
21
+ <objective>
22
+ Invoca o agent [`workflow-generator`](../agents/workflow-generator.md) que executa 4 layers:
23
+
24
+ 1. **Classify** — pergunta qual dos 6 patterns canônicos (Classify-Act, Fanout-Synthesize, Adversarial-Verify, Generate-Filter, Tournament, Loop-Done) encaixa
25
+ 2. **Specify** — faz 2-4 perguntas específicas do pattern escolhido
26
+ 3. **Compose** — detecta MCP necessárias + propõe reuso de agents canônicos do kit
27
+ 4. **Materialize** — escreve `.claude/workflows/<slug>.workflow.js` + `.claude/commands/<slug>.md` (locais ao projeto, NUNCA no kit canônico)
28
+
29
+ **Cria:**
30
+ - `.claude/workflows/<slug>.workflow.js` — script JS executável pela tool Workflow do Claude Code
31
+ - `.claude/commands/<slug>.md` — slash-command que dispara o workflow
32
+
33
+ **Após:** `/<slug> [--args]` invoca direto. Pra rodar a cada N minutos: `/loop 3m /<slug>`. Pra cron remoto: `/schedule "*/3 * * * *" <slug>`.
34
+ </objective>
35
+
36
+ <context>
37
+ **Argumento:**
38
+ - `$ARGUMENTS` — descrição livre em português do objetivo. Quanto mais específico, menos perguntas o gerador faz no Layer 1.
39
+
40
+ **Exemplos:**
41
+ ```
42
+ /criar-workflow auditar comportamento dos agentes IA atendendo WhatsApp
43
+ a cada 3 minutos, analisar transcripts e gerar report
44
+
45
+ /criar-workflow rankear top 10 PRs no GitHub abertos ha mais de 7 dias
46
+ sem revisao por impacto
47
+
48
+ /criar-workflow bug hunt continuo no codigo do servico de pagamento
49
+ ate 2 rounds sem novos achados
50
+
51
+ /criar-workflow brainstorm 12 nomes pra minha CLI e pegar top 3 por
52
+ memorability + brand fit
53
+ ```
54
+
55
+ **Pré-requisitos:**
56
+ - Claude Code Max / Team / Enterprise (Dynamic Workflows em research preview Opus 4.8+)
57
+ - Tool `Workflow` habilitada na sessão
58
+ - `.claude/workflows/` existe ou sera criado
59
+
60
+ **Quando NÃO usar:**
61
+ - Tarefa cabe em 1 slash-command existente (ex.: ja temos `/auditar-observabilidade-cobertura-workflow` — não duplique)
62
+ - Descrição vaga ("automatize meu projeto") — refine antes
63
+ - Mudança que precisa entrar no kit canônico — esses são PRs no repo `luanpdd/kit-mcp`, não workflows locais
64
+ </context>
65
+
66
+ <process>
67
+
68
+ ## 1. Validar descrição mínima
69
+
70
+ ```bash
71
+ DESC="$ARGUMENTS"
72
+ if [ -z "$DESC" ] || [ ${#DESC} -lt 10 ]; then
73
+ echo "ERRO: descreva o que voce quer com pelo menos 10 chars."
74
+ echo "Exemplo: /criar-workflow auditar conversas IA no WhatsApp a cada 3min"
75
+ exit 1
76
+ fi
77
+ ```
78
+
79
+ ## 2. Garantir destino existe
80
+
81
+ ```bash
82
+ mkdir -p .claude/workflows .claude/commands
83
+ ```
84
+
85
+ ## 3. Dispatch para workflow-generator
86
+
87
+ ```text
88
+ Task(
89
+ subagent_type="workflow-generator",
90
+ prompt="
91
+ description: ${DESC}
92
+ output_dir_workflows: .claude/workflows/
93
+ output_dir_commands: .claude/commands/
94
+
95
+ Execute os 4 layers conforme spec do agent:
96
+
97
+ LAYER 0 — Classify (AskUserQuestion obrigatorio, 6 opcoes do pattern)
98
+ LAYER 1 — Specify (perguntas especificas do pattern escolhido, 2-4 max)
99
+ LAYER 2 — Compose (detectar MCP + propor reuso de agents do kit via AskUserQuestion)
100
+ LAYER 3 — Materialize (.workflow.js + .md com header // kit-mcp:user-generated)
101
+ LAYER 4 — Deliver (output formatado com slug, pattern, MCP, comandos /<slug>, /loop, /schedule)
102
+
103
+ REGRAS DURAS:
104
+ - meta literal puro (sem template literals, sem function calls, sem spread)
105
+ - Todo agent() com schema JSON Schema declarado (required: [...])
106
+ - pipeline() default, parallel() so com justificativa inline
107
+ - Sem Date.now()/Math.random()/argless new Date() — pra randomness varie por indice, pra timestamps passe via args
108
+ - Header // kit-mcp:user-generated no topo do .workflow.js (distingue de // kit-mcp:reference do canonico)
109
+
110
+ NAO escreva em kit/ — workflows gerados sao locais.
111
+ "
112
+ )
113
+ ```
114
+
115
+ ## 4. Pós-output
116
+
117
+ ```
118
+ ═══════════════════════════════════════════════════════════
119
+ framework ► CRIAR-WORKFLOW ▸ <slug>
120
+ ═══════════════════════════════════════════════════════════
121
+
122
+ [output do workflow-generator]
123
+
124
+ ## Como usar
125
+
126
+ ```
127
+ /<slug> [--args ...] # 1 execucao
128
+ /loop 3m /<slug> [--args ...] # a cada 3min (dentro da sessao)
129
+ /schedule "*/3 * * * *" <slug> [--args] # cron remoto (24/7)
130
+ ```
131
+
132
+ ## Editar depois
133
+
134
+ Se quiser ajustar:
135
+ - `.claude/workflows/<slug>.workflow.js` — script do workflow
136
+ - `.claude/commands/<slug>.md` — slash-command (interface + flags)
137
+
138
+ A tool Workflow do Claude Code re-le o script a cada execucao — edit ja vale na proxima rodada.
139
+
140
+ ## Quando descontinuar
141
+
142
+ Apaga os 2 arquivos. Sem efeito colateral (workflows user-generated nao entram no kit/file-manifest.json nem no kit-mcp sync).
143
+ ```
144
+
145
+ </process>
146
+
147
+ <success_criteria>
148
+ - [ ] `$ARGUMENTS` validado (≥ 10 chars)
149
+ - [ ] `.claude/workflows/` e `.claude/commands/` criados se ausentes
150
+ - [ ] `workflow-generator` invocado via `Task()` com a descrição original
151
+ - [ ] Layer 0 (classify pattern) com `AskUserQuestion` obrigatório — NUNCA infere
152
+ - [ ] Layer 1 (specify) com perguntas específicas DO PADRÃO ESCOLHIDO — não pergunta tudo sempre
153
+ - [ ] Layer 2 (compose) propõe reuso de agents canônicos quando match óbvio
154
+ - [ ] Layer 3 (materialize) escreve 2 arquivos com headers corretos
155
+ - [ ] Layer 4 (deliver) output com `/<slug>`, `/loop`, `/schedule` formatados
156
+ - [ ] Workflow gerado parseável (`node -c` syntax check)
157
+ - [ ] Nenhum arquivo escrito em `kit/` (canônico) — só em `.claude/`
158
+ </success_criteria>
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: definir-perfil
3
3
  description: Altera o perfil de modelo para os agentes framework (quality/balanced/budget/inherit)
4
- argument-hint: "<perfil (quality|balanced|budget|inherit)>"
4
+ argument-hint: "<perfil (quality|balanced|budget|inherit)>"
5
5
  model: haiku
6
6
  allowed-tools:
7
7
  - Bash
@@ -1,108 +1,108 @@
1
- ---
2
- name: definir-slo
3
- description: Invoca slo-engineer para gerar SLO.md + SQL materialização SLI events. Aplica skill event-based-slos. Default 30d sliding window, target ≤ 99.95%.
4
- argument-hint: "<feature> [--target 99.9] [--owner email]"
5
- allowed-tools:
6
- - Read
7
- - Write
8
- - Bash
9
- - Task
10
- - AskUserQuestion
11
- ---
12
-
13
- <objective>
14
- Definir um SLO event-based para uma feature/jornada do usuário. Invoca o agente [`slo-engineer`](../agents/slo-engineer.md) que aplica a skill [`event-based-slos`](../skills/event-based-slos/SKILL.md) — SLI event-based, sliding window 30d, target ≤ 99.95%, owner nomeado, materialização em Postgres.
15
-
16
- **Cria/Atualiza:**
17
- - `.planning/slos/<slo_name>.md` — definição canônica do SLO
18
- - `supabase/migrations/<timestamp>_create_sli_<slo_name>.sql` — view materializada SLI
19
-
20
- **Após:** SLO está em `draft` status. Próximo passo: `/burn-rate-status <slo_name>` para validar baseline; após 1+ semana, promover de `draft` → `test_channel` → `primary`.
21
- </objective>
22
-
23
- <context>
24
- **Argumentos:** `$ARGUMENTS` — primeiro token é a feature/jornada (ex: `checkout`, `login`, `bulk-orders`); restante são flags.
25
-
26
- **Flags:**
27
- - `--target <percent>` — target % do SLO (default: agent sugere baseado em criticality, sempre ≤ 99.95%)
28
- - `--owner <email>` — owner do SLO (default: AskUserQuestion)
29
- - `--window <duration>` — sliding window (default: `30d`)
30
-
31
- **Pré-requisito (Full mode):** projeto Supabase configurado, schema `observability` com tabela de events (Phase 31 supabase-architect projeta isso).
32
- </context>
33
-
34
- <process>
35
-
36
- ## 1. Parsear argumentos
37
-
38
- ```bash
39
- FEATURE=$(echo "$ARGUMENTS" | awk '{print $1}')
40
- TARGET=$(echo "$ARGUMENTS" | grep -oE -- '--target [0-9.]+' | awk '{print $2}')
41
- OWNER=$(echo "$ARGUMENTS" | grep -oE -- '--owner [^ ]+' | awk '{print $2}')
42
- WINDOW=$(echo "$ARGUMENTS" | grep -oE -- '--window [^ ]+' | awk '{print $2}')
43
-
44
- [ -z "$FEATURE" ] && {
45
- echo "Uso: /definir-slo <feature> [--target N] [--owner email]"
46
- exit 1
47
- }
48
-
49
- [ -z "$WINDOW" ] && WINDOW="30d"
50
- ```
51
-
52
- ## 2. Detectar `supabase/config.toml`
53
-
54
- ```bash
55
- PROJECT_ID=""
56
- if [ -f supabase/config.toml ]; then
57
- PROJECT_ID=$(grep -E '^project_id\s*=' supabase/config.toml | sed 's/.*= *"\(.*\)".*/\1/' | head -1)
58
- fi
59
- ```
60
-
61
- ## 3. Dispatch para `slo-engineer`
62
-
63
- ```text
64
- Task(
65
- subagent_type="slo-engineer",
66
- prompt="
67
- feature: ${FEATURE}
68
- ${TARGET:+target: ${TARGET}}
69
- ${OWNER:+owner: ${OWNER}}
70
- window: ${WINDOW}
71
- ${PROJECT_ID:+project_id: ${PROJECT_ID}}
72
-
73
- Aplicar skill event-based-slos. Gerar:
74
- 1. .planning/slos/<slo_name>.md (SLO definition canônico)
75
- 2. supabase/migrations/<timestamp>_create_sli_<slo_name>.sql (materialized view + pg_cron refresh)
76
-
77
- Se target > 99.95%, recusar e explicar — métrica informativa, não SLO.
78
- Se Full mode (mcp__supabase disponível), apply_migration; senão, output text.
79
- "
80
- )
81
- ```
82
-
83
- ## 4. Pós-output
84
-
85
- ```
86
- ═══════════════════════════════════════════════════════════
87
- framework ► DEFINIR-SLO ▸ {slo_name}
88
- ═══════════════════════════════════════════════════════════
89
-
90
- [output do slo-engineer — ver Step 8 do agent]
91
-
92
- ## Próximos passos
93
- 1. `/burn-rate-status {slo_name}` — checar baseline atual
94
- 2. Após 1+ semana validando que SLO detecta incidents reais:
95
- - Editar `.planning/slos/{slo_name}.md` → status: `test_channel` → `primary`
96
- 3. Configurar alerts (page + ticket) — invocar `burn-rate-forecaster` ou config manual
97
- ```
98
-
99
- </process>
100
-
101
- <success_criteria>
102
- - [ ] FEATURE parseado de $ARGUMENTS
103
- - [ ] `slo-engineer` invocado via Task
104
- - [ ] `.planning/slos/<slo_name>.md` criado
105
- - [ ] Migration SQL criada (Full mode applied; Offline mode escrita)
106
- - [ ] Target ≤ 99.95% enforced
107
- - [ ] Owner registrado (via flag ou AskUserQuestion)
108
- </success_criteria>
1
+ ---
2
+ name: definir-slo
3
+ description: Invoca slo-engineer para gerar SLO.md + SQL materialização SLI events. Aplica skill event-based-slos. Default 30d sliding window, target ≤ 99.95%.
4
+ argument-hint: "<feature> [--target 99.9] [--owner email]"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Bash
9
+ - Task
10
+ - AskUserQuestion
11
+ ---
12
+
13
+ <objective>
14
+ Definir um SLO event-based para uma feature/jornada do usuário. Invoca o agente [`slo-engineer`](../agents/slo-engineer.md) que aplica a skill [`event-based-slos`](../skills/event-based-slos/SKILL.md) — SLI event-based, sliding window 30d, target ≤ 99.95%, owner nomeado, materialização em Postgres.
15
+
16
+ **Cria/Atualiza:**
17
+ - `.planning/slos/<slo_name>.md` — definição canônica do SLO
18
+ - `supabase/migrations/<timestamp>_create_sli_<slo_name>.sql` — view materializada SLI
19
+
20
+ **Após:** SLO está em `draft` status. Próximo passo: `/burn-rate-status <slo_name>` para validar baseline; após 1+ semana, promover de `draft` → `test_channel` → `primary`.
21
+ </objective>
22
+
23
+ <context>
24
+ **Argumentos:** `$ARGUMENTS` — primeiro token é a feature/jornada (ex: `checkout`, `login`, `bulk-orders`); restante são flags.
25
+
26
+ **Flags:**
27
+ - `--target <percent>` — target % do SLO (default: agent sugere baseado em criticality, sempre ≤ 99.95%)
28
+ - `--owner <email>` — owner do SLO (default: AskUserQuestion)
29
+ - `--window <duration>` — sliding window (default: `30d`)
30
+
31
+ **Pré-requisito (Full mode):** projeto Supabase configurado, schema `observability` com tabela de events (Phase 31 supabase-architect projeta isso).
32
+ </context>
33
+
34
+ <process>
35
+
36
+ ## 1. Parsear argumentos
37
+
38
+ ```bash
39
+ FEATURE=$(echo "$ARGUMENTS" | awk '{print $1}')
40
+ TARGET=$(echo "$ARGUMENTS" | grep -oE -- '--target [0-9.]+' | awk '{print $2}')
41
+ OWNER=$(echo "$ARGUMENTS" | grep -oE -- '--owner [^ ]+' | awk '{print $2}')
42
+ WINDOW=$(echo "$ARGUMENTS" | grep -oE -- '--window [^ ]+' | awk '{print $2}')
43
+
44
+ [ -z "$FEATURE" ] && {
45
+ echo "Uso: /definir-slo <feature> [--target N] [--owner email]"
46
+ exit 1
47
+ }
48
+
49
+ [ -z "$WINDOW" ] && WINDOW="30d"
50
+ ```
51
+
52
+ ## 2. Detectar `supabase/config.toml`
53
+
54
+ ```bash
55
+ PROJECT_ID=""
56
+ if [ -f supabase/config.toml ]; then
57
+ PROJECT_ID=$(grep -E '^project_id\s*=' supabase/config.toml | sed 's/.*= *"\(.*\)".*/\1/' | head -1)
58
+ fi
59
+ ```
60
+
61
+ ## 3. Dispatch para `slo-engineer`
62
+
63
+ ```text
64
+ Task(
65
+ subagent_type="slo-engineer",
66
+ prompt="
67
+ feature: ${FEATURE}
68
+ ${TARGET:+target: ${TARGET}}
69
+ ${OWNER:+owner: ${OWNER}}
70
+ window: ${WINDOW}
71
+ ${PROJECT_ID:+project_id: ${PROJECT_ID}}
72
+
73
+ Aplicar skill event-based-slos. Gerar:
74
+ 1. .planning/slos/<slo_name>.md (SLO definition canônico)
75
+ 2. supabase/migrations/<timestamp>_create_sli_<slo_name>.sql (materialized view + pg_cron refresh)
76
+
77
+ Se target > 99.95%, recusar e explicar — métrica informativa, não SLO.
78
+ Se Full mode (mcp__supabase disponível), apply_migration; senão, output text.
79
+ "
80
+ )
81
+ ```
82
+
83
+ ## 4. Pós-output
84
+
85
+ ```
86
+ ═══════════════════════════════════════════════════════════
87
+ framework ► DEFINIR-SLO ▸ {slo_name}
88
+ ═══════════════════════════════════════════════════════════
89
+
90
+ [output do slo-engineer — ver Step 8 do agent]
91
+
92
+ ## Próximos passos
93
+ 1. `/burn-rate-status {slo_name}` — checar baseline atual
94
+ 2. Após 1+ semana validando que SLO detecta incidents reais:
95
+ - Editar `.planning/slos/{slo_name}.md` → status: `test_channel` → `primary`
96
+ 3. Configurar alerts (page + ticket) — invocar `burn-rate-forecaster` ou config manual
97
+ ```
98
+
99
+ </process>
100
+
101
+ <success_criteria>
102
+ - [ ] FEATURE parseado de $ARGUMENTS
103
+ - [ ] `slo-engineer` invocado via Task
104
+ - [ ] `.planning/slos/<slo_name>.md` criado
105
+ - [ ] Migration SQL criada (Full mode applied; Offline mode escrita)
106
+ - [ ] Target ≤ 99.95% enforced
107
+ - [ ] Owner registrado (via flag ou AskUserQuestion)
108
+ </success_criteria>
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: fio
3
3
  description: Gerencia threads de contexto persistentes para trabalho entre sessões
4
- argument-hint: "[nome | descrição]"
4
+ argument-hint: "[nome | descrição]"
5
5
  allowed-tools:
6
6
  - Read
7
7
  - Write