@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.
- package/bin/cli.js +2 -2
- package/bin/mcp.js +6 -6
- package/bin/ui.js +74 -74
- package/gates/ai-prompt-stability.md +120 -120
- package/gates/budget-description.md +68 -68
- package/gates/confidence.md +29 -29
- package/gates/dependency-check.md +33 -33
- package/gates/dept-cycle-prevention.md +179 -179
- package/gates/golden-signals-coverage.md +133 -133
- package/gates/legacy-refactor-safety.md +178 -178
- package/gates/multi-tenant-rls-coverage.md +102 -102
- package/gates/no-personal-uuid.md +72 -72
- package/gates/obs-agents-mcp-supabase.md +86 -86
- package/gates/obs-skills-frontmatter.md +76 -76
- package/gates/observability-coverage.md +151 -151
- package/gates/omm-no-regression.md +83 -83
- package/gates/postmortem-template-required.md +127 -127
- package/gates/prr-checklist-coverage.md +128 -128
- package/gates/regression.md +32 -32
- package/gates/release-pipeline-policy.md +132 -132
- package/gates/secrets-scan.md +33 -33
- package/gates/service-role-not-in-user-facing.md +113 -113
- package/gates/skill-must-include.md +71 -71
- package/gates/sync-idempotent.md +62 -62
- package/gates/verify-phase-goal.md +34 -34
- package/kit/agents/designer-ui.md +216 -216
- package/kit/agents/workflow-generator.md +537 -167
- package/kit/commands/adicionar-backlog.md +1 -1
- package/kit/commands/adicionar-fase.md +1 -1
- package/kit/commands/adicionar-tarefa.md +1 -1
- package/kit/commands/auditar-observabilidade.md +103 -103
- package/kit/commands/auditar-toil.md +129 -129
- package/kit/commands/caracterizar-prompt.md +195 -195
- package/kit/commands/criar-workflow.md +158 -158
- package/kit/commands/definir-perfil.md +1 -1
- package/kit/commands/definir-slo.md +108 -108
- package/kit/commands/fio.md +1 -1
- package/kit/commands/golden-signals.md +142 -142
- package/kit/commands/instrumentar-fase.md +200 -200
- package/kit/commands/investigar-producao.md +162 -162
- package/kit/commands/observabilidade.md +118 -118
- package/kit/commands/postmortem.md +179 -179
- package/kit/commands/prr.md +205 -205
- package/kit/commands/publicar-rapido.md +207 -207
- package/kit/commands/risk-budget.md +220 -220
- package/kit/commands/sre.md +230 -230
- package/kit/file-manifest.json +424 -424
- package/kit/framework/references/output-style.md +22 -22
- package/kit/hooks/post-apply-migration.js +199 -199
- package/kit/hooks/sidecar-tool-publisher.js +210 -210
- package/kit/skills/_shared-dados-distribuidos/glossary.md +224 -224
- package/kit/skills/_shared-legacy/glossary.md +389 -389
- package/kit/skills/_shared-multi-tenant/glossary.md +186 -186
- package/kit/skills/_shared-observability/glossary.md +396 -396
- package/kit/skills/_shared-sre/glossary.md +712 -712
- package/kit/skills/_shared-supabase/glossary.md +234 -234
- package/kit/skills/blameless-postmortems/SKILL.md +340 -340
- package/kit/skills/burn-rate-alerting/SKILL.md +258 -258
- package/kit/skills/cascading-failures/SKILL.md +311 -311
- package/kit/skills/core-analysis-loop/SKILL.md +352 -352
- package/kit/skills/distributed-tracing/SKILL.md +362 -362
- package/kit/skills/dynamic-workflow-authoring/SKILL.md +327 -223
- package/kit/skills/eliminating-toil/SKILL.md +243 -243
- package/kit/skills/event-based-slos/SKILL.md +296 -296
- package/kit/skills/four-golden-signals/SKILL.md +314 -314
- package/kit/skills/hermetic-builds/SKILL.md +323 -323
- package/kit/skills/legacy-monster-methods/SKILL.md +444 -444
- package/kit/skills/llm-as-dependency/SKILL.md +436 -436
- package/kit/skills/load-shedding-graceful-degradation/SKILL.md +396 -396
- package/kit/skills/observability-driven-development/SKILL.md +315 -315
- package/kit/skills/observability-maturity-model/SKILL.md +222 -222
- package/kit/skills/opentelemetry-standard/SKILL.md +351 -351
- package/kit/skills/production-readiness-review/SKILL.md +305 -305
- package/kit/skills/release-engineering/SKILL.md +367 -367
- package/kit/skills/retry-strategies/SKILL.md +372 -372
- package/kit/skills/sre-risk-management/SKILL.md +221 -221
- package/kit/skills/structured-events/SKILL.md +265 -265
- package/kit/skills/supabase-cron-queues/SKILL.md +275 -275
- package/kit/skills/supabase-database-functions/SKILL.md +332 -332
- package/kit/skills/supabase-declarative-schema/SKILL.md +183 -183
- package/kit/skills/supabase-pgvector-rag/SKILL.md +253 -253
- package/kit/skills/supabase-postgres-style/SKILL.md +138 -138
- package/kit/skills/supabase-storage/SKILL.md +234 -234
- package/kit/skills/telemetry-pipelines/SKILL.md +259 -259
- package/kit/skills/telemetry-sampling/SKILL.md +256 -256
- package/kit/skills/ui-anti-padroes-ia/SKILL.md +261 -261
- package/kit/skills/ui-contexto-produto/SKILL.md +248 -248
- package/kit/skills/ui-cor-estrategia/SKILL.md +213 -213
- package/kit/skills/ui-critica-auditoria/SKILL.md +260 -260
- package/kit/skills/ui-motion-funcional/SKILL.md +264 -264
- package/kit/skills/ui-ritmo-espacial/SKILL.md +259 -259
- package/kit/skills/ui-tipografia/SKILL.md +211 -211
- package/package.json +1 -1
- package/src/cli/index.js +1114 -1114
- package/src/cli/render.js +194 -194
- package/src/cli/upgrade-check.js +135 -135
- package/src/core/error-redaction.js +76 -76
- package/src/core/failures.js +153 -153
- package/src/core/gate-runner.js +205 -205
- package/src/core/gates.js +82 -82
- package/src/core/logger.js +170 -170
- package/src/core/manifest-verify.js +174 -174
- package/src/core/metrics.js +268 -268
- package/src/core/notify.js +60 -60
- package/src/core/path-safety.js +141 -141
- package/src/core/replays.js +120 -120
- package/src/core/ui.js +185 -185
- package/src/mcp-server/install.js +149 -149
- package/src/mcp-server/roots.js +124 -124
- package/src/ui/auto-spawn.js +113 -113
- package/src/ui/browser.js +78 -78
- package/src/ui/client.js +130 -130
- package/src/ui/events.js +65 -65
- package/src/ui/lockfile.js +191 -191
- package/src/ui/port.js +67 -67
- package/src/ui/server.js +547 -547
- 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>
|