@luanpdd/kit-mcp 1.33.0 → 1.35.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/LICENSE +21 -21
- package/README.md +168 -168
- package/gates/agent-no-recursive-dispatch.md +84 -84
- package/kit/COMANDOS.md +138 -138
- package/kit/COMPATIBILITY.md +70 -70
- package/kit/README.md +76 -76
- package/kit/agents/advisor-researcher.md +109 -109
- package/kit/agents/ai-mutation-tester.md +289 -289
- package/kit/agents/assumptions-analyzer.md +110 -110
- package/kit/agents/audit-log-implementer.md +314 -314
- package/kit/agents/auditor-consistencia-isolamento.md +414 -414
- package/kit/agents/b2b-saas-architect.md +157 -157
- package/kit/agents/burn-rate-forecaster.md +153 -153
- package/kit/agents/cascading-failures-auditor.md +299 -299
- package/kit/agents/codebase-mapper.md +769 -769
- package/kit/agents/crm-pipeline-implementer.md +257 -257
- package/kit/agents/debugger.md +814 -814
- package/kit/agents/designer-ui.md +216 -216
- package/kit/agents/detector-tenant-quente.md +338 -338
- package/kit/agents/evolution-go-integrator.md +201 -201
- package/kit/agents/example-reviewer.md +22 -22
- package/kit/agents/executor.md +565 -565
- package/kit/agents/golden-signals-instrumenter.md +232 -232
- package/kit/agents/incident-investigator.md +238 -238
- package/kit/agents/integration-checker.md +203 -203
- package/kit/agents/invite-flow-implementer.md +190 -190
- package/kit/agents/legacy-characterizer.md +369 -369
- package/kit/agents/lgpd-compliance-auditor.md +296 -296
- package/kit/agents/load-shedding-instrumenter.md +290 -290
- package/kit/agents/multi-tenant-isolation-auditor.md +254 -254
- package/kit/agents/multi-tenant-rls-writer.md +341 -341
- package/kit/agents/nyquist-auditor.md +181 -181
- package/kit/agents/observability-coverage-auditor.md +316 -316
- package/kit/agents/observability-instrumenter.md +191 -191
- package/kit/agents/omm-auditor.md +291 -291
- package/kit/agents/org-onboarding-implementer.md +224 -224
- package/kit/agents/payload-capture-instrumenter.md +274 -274
- package/kit/agents/phase-researcher.md +697 -697
- package/kit/agents/plan-checker.md +275 -275
- package/kit/agents/planner.md +923 -923
- package/kit/agents/postmortem-writer.md +273 -273
- package/kit/agents/project-researcher.md +653 -653
- package/kit/agents/prr-conductor.md +287 -287
- package/kit/agents/refactor-safety-auditor.md +405 -405
- package/kit/agents/release-pipeline-auditor.md +364 -364
- package/kit/agents/research-synthesizer.md +246 -246
- package/kit/agents/roadmapper.md +678 -678
- package/kit/agents/schema-checker.md +160 -160
- package/kit/agents/seam-finder.md +360 -360
- package/kit/agents/shotgun-surgery-detector.md +350 -350
- package/kit/agents/slo-engineer.md +217 -217
- package/kit/agents/storytelling-analyst.md +300 -300
- package/kit/agents/supabase-architect.md +249 -249
- package/kit/agents/supabase-auth-bootstrapper.md +400 -400
- package/kit/agents/supabase-auth-hook-writer.md +418 -418
- package/kit/agents/supabase-branching-architect.md +563 -563
- package/kit/agents/supabase-cicd-pipeline-implementer.md +778 -778
- package/kit/agents/supabase-column-privileges-writer.md +400 -400
- package/kit/agents/supabase-edge-fn-tester.md +288 -288
- package/kit/agents/supabase-edge-fn-writer.md +341 -341
- package/kit/agents/supabase-mfa-implementer.md +439 -439
- package/kit/agents/supabase-migration-writer.md +386 -386
- package/kit/agents/supabase-oauth-server-implementer.md +507 -507
- package/kit/agents/supabase-rbac-implementer.md +393 -393
- package/kit/agents/supabase-realtime-implementer.md +364 -364
- package/kit/agents/supabase-rls-hardener.md +522 -522
- package/kit/agents/supabase-rls-writer.md +324 -324
- package/kit/agents/supabase-roles-implementer.md +356 -356
- package/kit/agents/supabase-social-auth-implementer.md +451 -451
- package/kit/agents/supabase-sso-saml-architect.md +549 -549
- package/kit/agents/supabase-storage-implementer.md +407 -407
- package/kit/agents/super-admin-implementer.md +282 -282
- package/kit/agents/toil-auditor.md +268 -268
- package/kit/agents/ui-auditor.md +438 -438
- package/kit/agents/ui-checker.md +305 -305
- package/kit/agents/ui-researcher.md +356 -356
- package/kit/agents/user-profiler.md +176 -176
- package/kit/agents/validador-evolucao-schema.md +336 -336
- package/kit/agents/verifier.md +729 -729
- package/kit/agents/workflow-generator.md +167 -0
- package/kit/commands/adicionar-backlog.md +75 -75
- package/kit/commands/adicionar-fase.md +42 -42
- package/kit/commands/adicionar-tarefa.md +45 -45
- package/kit/commands/adicionar-testes.md +41 -41
- package/kit/commands/ajuda.md +21 -21
- package/kit/commands/atualizar.md +37 -37
- package/kit/commands/auditar-cascading.md +111 -111
- package/kit/commands/auditar-marco.md +179 -179
- package/kit/commands/auditar-observabilidade-cobertura-workflow.md +121 -0
- package/kit/commands/auditar-observabilidade-cobertura.md +183 -183
- package/kit/commands/auditar-refactor.md +219 -219
- package/kit/commands/auditar-release.md +109 -109
- package/kit/commands/auditar-uat.md +23 -23
- package/kit/commands/autonomo.md +40 -40
- package/kit/commands/branch-pr.md +24 -24
- package/kit/commands/burn-rate-status.md +408 -408
- package/kit/commands/capturar-payloads.md +193 -193
- package/kit/commands/caracterizar.md +212 -212
- package/kit/commands/concluir-marco.md +247 -247
- package/kit/commands/configuracoes.md +36 -36
- package/kit/commands/criar-workflow.md +158 -0
- package/kit/commands/dados-distribuidos.md +188 -188
- package/kit/commands/definir-perfil.md +10 -10
- package/kit/commands/depurar.md +190 -190
- package/kit/commands/detectar-duplicacao.md +197 -197
- package/kit/commands/discutir-fase.md +131 -131
- package/kit/commands/encontrar-seams.md +136 -136
- package/kit/commands/entrar-discord.md +17 -17
- package/kit/commands/estatisticas.md +18 -18
- package/kit/commands/example-greeting.md +33 -33
- package/kit/commands/executar-fase.md +58 -58
- package/kit/commands/expresso.md +56 -56
- package/kit/commands/fase-ui.md +34 -34
- package/kit/commands/fazer.md +57 -57
- package/kit/commands/fio.md +125 -125
- package/kit/commands/fluxos-trabalho.md +64 -64
- package/kit/commands/forense.md +176 -176
- package/kit/commands/gerenciador.md +38 -38
- package/kit/commands/inserir-fase.md +31 -31
- package/kit/commands/legacy.md +263 -263
- package/kit/commands/limpeza.md +17 -17
- package/kit/commands/listar-hipoteses-fase.md +45 -45
- package/kit/commands/listar-workspaces.md +18 -18
- package/kit/commands/load-shedding.md +117 -117
- package/kit/commands/mapear-codebase.md +70 -70
- package/kit/commands/multi-tenant.md +163 -163
- package/kit/commands/nota.md +33 -33
- package/kit/commands/novo-marco.md +43 -43
- package/kit/commands/novo-projeto.md +41 -41
- package/kit/commands/novo-workspace.md +43 -43
- package/kit/commands/pausar-trabalho.md +37 -37
- package/kit/commands/perfil-usuario.md +45 -45
- package/kit/commands/pesquisar-fase.md +195 -195
- package/kit/commands/planejar-fase.md +67 -67
- package/kit/commands/planejar-lacunas.md +33 -33
- package/kit/commands/plantar-ideia.md +25 -25
- package/kit/commands/progresso.md +24 -24
- package/kit/commands/proximo.md +30 -30
- package/kit/commands/publicar.md +490 -490
- package/kit/commands/rapido.md +35 -35
- package/kit/commands/reaplicar-patches.md +124 -124
- package/kit/commands/refactor-seguro.md +321 -321
- package/kit/commands/relatorio-sessao.md +19 -19
- package/kit/commands/remover-fase.md +31 -31
- package/kit/commands/remover-workspace.md +26 -26
- package/kit/commands/resumo-marco.md +50 -50
- package/kit/commands/retomar-trabalho.md +40 -40
- package/kit/commands/revisar-backlog.md +60 -60
- package/kit/commands/revisar-ui.md +32 -32
- package/kit/commands/revisar.md +37 -37
- package/kit/commands/saude.md +21 -21
- package/kit/commands/setup-notion.md +93 -93
- package/kit/commands/storytelling.md +179 -179
- package/kit/commands/supabase.md +238 -238
- package/kit/commands/sync-main.md +68 -68
- package/kit/commands/validar-fase.md +35 -35
- package/kit/commands/verificar-tarefas.md +44 -44
- package/kit/commands/verificar-trabalho.md +64 -64
- package/kit/file-manifest.json +424 -419
- package/kit/framework/bin/lib/commands.cjs +959 -959
- package/kit/framework/bin/lib/config.cjs +442 -442
- package/kit/framework/bin/lib/core.cjs +1230 -1230
- package/kit/framework/bin/lib/frontmatter.cjs +336 -336
- package/kit/framework/bin/lib/init.cjs +1442 -1442
- package/kit/framework/bin/lib/milestone.cjs +252 -252
- package/kit/framework/bin/lib/model-profiles.cjs +68 -68
- package/kit/framework/bin/lib/phase.cjs +888 -888
- package/kit/framework/bin/lib/profile-output.cjs +952 -952
- package/kit/framework/bin/lib/profile-pipeline.cjs +539 -539
- package/kit/framework/bin/lib/roadmap.cjs +329 -329
- package/kit/framework/bin/lib/security.cjs +382 -382
- package/kit/framework/bin/lib/state.cjs +1031 -1031
- package/kit/framework/bin/lib/template.cjs +222 -222
- package/kit/framework/bin/lib/uat.cjs +282 -282
- package/kit/framework/bin/lib/verify.cjs +888 -888
- package/kit/framework/bin/lib/workstream.cjs +491 -491
- package/kit/framework/bin/tools.cjs +918 -918
- package/kit/framework/commands/workstreams.md +63 -63
- package/kit/framework/references/checkpoints.md +778 -778
- package/kit/framework/references/continuation-format.md +249 -249
- package/kit/framework/references/decimal-phase-calculation.md +64 -64
- package/kit/framework/references/git-integration.md +295 -295
- package/kit/framework/references/git-planning-commit.md +38 -38
- package/kit/framework/references/model-profile-resolution.md +36 -36
- package/kit/framework/references/model-profiles.md +139 -139
- package/kit/framework/references/phase-argument-parsing.md +61 -61
- package/kit/framework/references/planning-config.md +202 -202
- package/kit/framework/references/questioning.md +162 -162
- package/kit/framework/references/tdd.md +263 -263
- package/kit/framework/references/ui-brand.md +160 -160
- package/kit/framework/references/user-profiling.md +657 -657
- package/kit/framework/references/verification-patterns.md +612 -612
- package/kit/framework/references/workstream-flag.md +58 -58
- package/kit/framework/templates/DEBUG.md +164 -164
- package/kit/framework/templates/UAT.md +265 -265
- package/kit/framework/templates/UI-SPEC.md +100 -100
- package/kit/framework/templates/VALIDATION.md +76 -76
- package/kit/framework/templates/claude-md.md +122 -122
- package/kit/framework/templates/codebase/architecture.md +185 -185
- package/kit/framework/templates/codebase/concerns.md +205 -205
- package/kit/framework/templates/codebase/conventions.md +204 -204
- package/kit/framework/templates/codebase/integrations.md +192 -192
- package/kit/framework/templates/codebase/stack.md +158 -158
- package/kit/framework/templates/codebase/structure.md +199 -199
- package/kit/framework/templates/codebase/testing.md +301 -301
- package/kit/framework/templates/config.json +44 -44
- package/kit/framework/templates/context.md +352 -352
- package/kit/framework/templates/continue-here.md +78 -78
- package/kit/framework/templates/copilot-instructions.md +7 -7
- package/kit/framework/templates/debug-subagent-prompt.md +91 -91
- package/kit/framework/templates/dev-preferences.md +20 -20
- package/kit/framework/templates/discovery.md +146 -146
- package/kit/framework/templates/discussion-log.md +63 -63
- package/kit/framework/templates/milestone-archive.md +123 -123
- package/kit/framework/templates/milestone.md +115 -115
- package/kit/framework/templates/phase-prompt.md +610 -610
- package/kit/framework/templates/planner-subagent-prompt.md +117 -117
- package/kit/framework/templates/project.md +186 -186
- package/kit/framework/templates/requirements.md +231 -231
- package/kit/framework/templates/research-project/ARCHITECTURE.md +204 -204
- package/kit/framework/templates/research-project/FEATURES.md +147 -147
- package/kit/framework/templates/research-project/PITFALLS.md +200 -200
- package/kit/framework/templates/research-project/STACK.md +120 -120
- package/kit/framework/templates/research-project/SUMMARY.md +170 -170
- package/kit/framework/templates/research.md +419 -419
- package/kit/framework/templates/retrospective.md +54 -54
- package/kit/framework/templates/roadmap.md +202 -202
- package/kit/framework/templates/state.md +176 -176
- package/kit/framework/templates/summary-complex.md +59 -59
- package/kit/framework/templates/summary-minimal.md +41 -41
- package/kit/framework/templates/summary-standard.md +48 -48
- package/kit/framework/templates/summary.md +209 -209
- package/kit/framework/templates/user-profile.md +146 -146
- package/kit/framework/templates/user-setup.md +256 -256
- package/kit/framework/templates/verification-report.md +258 -258
- package/kit/framework/workflows/add-phase.md +112 -112
- package/kit/framework/workflows/add-tests.md +351 -351
- package/kit/framework/workflows/add-todo.md +158 -158
- package/kit/framework/workflows/audit-milestone.md +340 -340
- package/kit/framework/workflows/audit-uat.md +109 -109
- package/kit/framework/workflows/autonomous.md +891 -891
- package/kit/framework/workflows/check-todos.md +177 -177
- package/kit/framework/workflows/cleanup.md +152 -152
- package/kit/framework/workflows/complete-milestone.md +696 -696
- package/kit/framework/workflows/diagnose-issues.md +231 -231
- package/kit/framework/workflows/discovery-phase.md +289 -289
- package/kit/framework/workflows/discuss-phase-assumptions.md +653 -653
- package/kit/framework/workflows/discuss-phase.md +784 -784
- package/kit/framework/workflows/do.md +104 -104
- package/kit/framework/workflows/execute-phase.md +838 -838
- package/kit/framework/workflows/execute-plan.md +510 -510
- package/kit/framework/workflows/fast.md +102 -102
- package/kit/framework/workflows/forensics.md +265 -265
- package/kit/framework/workflows/health.md +181 -181
- package/kit/framework/workflows/help.md +619 -619
- package/kit/framework/workflows/insert-phase.md +130 -130
- package/kit/framework/workflows/list-phase-assumptions.md +178 -178
- package/kit/framework/workflows/list-workspaces.md +56 -56
- package/kit/framework/workflows/manager.md +362 -362
- package/kit/framework/workflows/map-codebase.md +377 -377
- package/kit/framework/workflows/milestone-summary.md +223 -223
- package/kit/framework/workflows/new-milestone.md +486 -486
- package/kit/framework/workflows/new-project.md +1159 -1159
- package/kit/framework/workflows/new-workspace.md +237 -237
- package/kit/framework/workflows/next.md +97 -97
- package/kit/framework/workflows/node-repair.md +92 -92
- package/kit/framework/workflows/note.md +156 -156
- package/kit/framework/workflows/pause-work.md +176 -176
- package/kit/framework/workflows/plan-milestone-gaps.md +273 -273
- package/kit/framework/workflows/plan-phase.md +765 -765
- package/kit/framework/workflows/plant-seed.md +169 -169
- package/kit/framework/workflows/pr-branch.md +129 -129
- package/kit/framework/workflows/profile-user.md +450 -450
- package/kit/framework/workflows/progress.md +507 -507
- package/kit/framework/workflows/quick.md +757 -757
- package/kit/framework/workflows/remove-phase.md +155 -155
- package/kit/framework/workflows/remove-workspace.md +90 -90
- package/kit/framework/workflows/research-phase.md +82 -82
- package/kit/framework/workflows/resume-project.md +326 -326
- package/kit/framework/workflows/review.md +228 -228
- package/kit/framework/workflows/session-report.md +146 -146
- package/kit/framework/workflows/settings.md +283 -283
- package/kit/framework/workflows/ship.md +228 -228
- package/kit/framework/workflows/stats.md +60 -60
- package/kit/framework/workflows/transition.md +671 -671
- package/kit/framework/workflows/ui-phase.md +302 -302
- package/kit/framework/workflows/ui-review.md +165 -165
- package/kit/framework/workflows/update.md +323 -323
- package/kit/framework/workflows/validate-phase.md +174 -174
- package/kit/framework/workflows/verify-phase.md +252 -252
- package/kit/framework/workflows/verify-work.md +637 -637
- package/kit/hooks/check-update.js +118 -118
- package/kit/hooks/context-monitor.js +163 -163
- package/kit/hooks/kit-attribution-reminder.cjs +92 -92
- package/kit/hooks/kit-router.cjs +137 -137
- package/kit/hooks/prompt-guard.js +103 -103
- package/kit/hooks/statusline.js +125 -125
- package/kit/hooks/workflow-guard.js +101 -101
- package/kit/settings.json +45 -45
- package/kit/skills/ai-prompt-characterization/SKILL.md +335 -335
- package/kit/skills/armadilhas-sistemas-distribuidos/SKILL.md +447 -447
- package/kit/skills/audit-log-multi-tenant/SKILL.md +340 -340
- package/kit/skills/b2b-saas-architecture/SKILL.md +300 -300
- package/kit/skills/consistencia-leitura-replica/SKILL.md +385 -385
- package/kit/skills/crm-lead-pipeline-patterns/SKILL.md +343 -343
- package/kit/skills/dynamic-workflow-authoring/SKILL.md +223 -0
- package/kit/skills/escolha-modelo-consistencia/SKILL.md +494 -494
- package/kit/skills/evolucao-schema-compativel/SKILL.md +448 -448
- package/kit/skills/evolution-go-whatsapp-integration/SKILL.md +322 -322
- package/kit/skills/example-skill/SKILL.md +42 -42
- package/kit/skills/legacy-api-only-applications/SKILL.md +358 -358
- package/kit/skills/legacy-characterization-tests/SKILL.md +330 -330
- package/kit/skills/legacy-effect-analysis/SKILL.md +331 -331
- package/kit/skills/legacy-extract-class/SKILL.md +203 -203
- package/kit/skills/legacy-programming-by-difference/SKILL.md +252 -252
- package/kit/skills/legacy-seams-and-test-harness/SKILL.md +460 -460
- package/kit/skills/legacy-shotgun-surgery/SKILL.md +286 -286
- package/kit/skills/legacy-sprout-wrap-techniques/SKILL.md +434 -434
- package/kit/skills/legacy-storytelling-naked-crc/SKILL.md +270 -270
- package/kit/skills/lgpd-multi-tenant-compliance/SKILL.md +340 -340
- package/kit/skills/member-invite-flow/SKILL.md +305 -305
- package/kit/skills/member-management-react-shadcn/SKILL.md +328 -328
- package/kit/skills/multi-tenant-performance-scaling/SKILL.md +316 -316
- package/kit/skills/multi-tenant-rls-hierarchy/SKILL.md +342 -342
- package/kit/skills/org-onboarding-flow/SKILL.md +257 -257
- package/kit/skills/org-switcher-react-pattern/SKILL.md +349 -349
- package/kit/skills/permission-gate-react-pattern/SKILL.md +271 -271
- package/kit/skills/postgres-isolamento-concorrencia/SKILL.md +552 -552
- package/kit/skills/pre-refactor-characterization/SKILL.md +421 -421
- package/kit/skills/rbac-permissions-matrix-supabase/SKILL.md +338 -338
- package/kit/skills/streams-eventos-cdc/SKILL.md +711 -711
- package/kit/skills/supabase-auth-hardening/SKILL.md +674 -674
- package/kit/skills/supabase-auth-hooks/SKILL.md +875 -875
- package/kit/skills/supabase-auth-methods/SKILL.md +486 -486
- package/kit/skills/supabase-auth-sessions/SKILL.md +579 -579
- package/kit/skills/supabase-auth-ssr/SKILL.md +306 -306
- package/kit/skills/supabase-branching-workflow/SKILL.md +544 -544
- package/kit/skills/supabase-ci-cd-github-actions/SKILL.md +880 -880
- package/kit/skills/supabase-column-level-security/SKILL.md +426 -426
- package/kit/skills/supabase-config-toml-remotes/SKILL.md +807 -807
- package/kit/skills/supabase-custom-claims-rbac/SKILL.md +472 -472
- package/kit/skills/supabase-edge-functions/SKILL.md +330 -330
- package/kit/skills/supabase-edge-functions-auth/SKILL.md +309 -309
- package/kit/skills/supabase-edge-functions-limits/SKILL.md +302 -302
- package/kit/skills/supabase-edge-functions-mcp-server/SKILL.md +279 -279
- package/kit/skills/supabase-edge-functions-testing/SKILL.md +277 -277
- package/kit/skills/supabase-edge-runtime-builtins/SKILL.md +357 -357
- package/kit/skills/supabase-enterprise-sso-saml/SKILL.md +545 -545
- package/kit/skills/supabase-jwt-signing-keys/SKILL.md +399 -399
- package/kit/skills/supabase-mfa/SKILL.md +488 -488
- package/kit/skills/supabase-migration-repair/SKILL.md +823 -823
- package/kit/skills/supabase-migrations/SKILL.md +297 -297
- package/kit/skills/supabase-oauth-server/SKILL.md +537 -537
- package/kit/skills/supabase-pgtap-testing/SKILL.md +1053 -1053
- package/kit/skills/supabase-postgres-roles/SKILL.md +392 -392
- package/kit/skills/supabase-realtime/SKILL.md +460 -460
- package/kit/skills/supabase-rls-defense-in-depth/SKILL.md +418 -418
- package/kit/skills/supabase-rls-policies/SKILL.md +635 -635
- package/kit/skills/supabase-social-oauth/SKILL.md +480 -480
- package/kit/skills/supabase-third-party-auth/SKILL.md +450 -450
- package/kit/skills/super-admin-platform-pattern/SKILL.md +326 -326
- package/kit/skills/tenant-quente-mitigacao/SKILL.md +605 -605
- 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/kit/skills/whatsapp-conversation-state-machine/SKILL.md +287 -287
- package/kit/workflows/auditar-observabilidade-cobertura.workflow.js +250 -0
- package/package.json +65 -63
- package/src/core/kit.js +333 -216
- package/src/core/reflect.js +247 -247
- package/src/core/registry.js +123 -112
- package/src/core/reverse-sync.js +448 -372
- package/src/core/sync.js +477 -437
- package/src/core/watch.js +121 -121
- package/src/mcp-server/index.js +794 -794
|
@@ -1,191 +1,191 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: observability-instrumenter
|
|
3
|
-
tier: specialized
|
|
4
|
-
description: Instrumenta código com OpenTelemetry — gera spans, atributos canônicos (user.id, tenant_id, request.id, result.success, error.type, build_id) seguindo skill structured-events.
|
|
5
|
-
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
-
color: yellow
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
Você é o instrumentador de observabilidade. Recebe caminho de código + endpoints/handlers que precisam ser instrumentados e produz patches com OTel spans + atributos canônicos. Você consulta as skills [`structured-events`](../skills/structured-events/SKILL.md), [`distributed-tracing`](../skills/distributed-tracing/SKILL.md) e [`opentelemetry-standard`](../skills/opentelemetry-standard/SKILL.md) — conhecimento autoritativo sobre wide events e OTel.
|
|
10
|
-
|
|
11
|
-
**Compat:** Full em todos os IDEs (filesystem-only). Veja [COMPATIBILITY.md](../COMPATIBILITY.md).
|
|
12
|
-
|
|
13
|
-
## Por que existe
|
|
14
|
-
|
|
15
|
-
Instrumentação manual é trabalho repetitivo e pulável — engenheiros mergem PR sem spans, sem `result.success`, sem `error.type`. Quando incident acontece, cego. Este agent garante padrão canônico em todo handler/Edge Function/job, com atributos consistentes, code branches cobertos, e validação ODD das 4 perguntas (Cap 11).
|
|
16
|
-
|
|
17
|
-
## Inputs esperados (do caller)
|
|
18
|
-
|
|
19
|
-
- `target_files`: lista de arquivos com handlers/Edge Functions/jobs a instrumentar (caminhos relativos ao project root)
|
|
20
|
-
- (Opcional) `endpoints`: lista de endpoints/rotas a cobrir — se vazio, agent detecta via grep
|
|
21
|
-
- (Opcional) `runtime`: `node` | `deno` | `python` — se omitido, detecta via package.json/deno.json/pyproject.toml
|
|
22
|
-
- (Opcional) `service_name`: nome canônico do service (ex: `orders-api`, `edge-process-emails`) — se omitido, deriva de `package.json#name` ou diretório
|
|
23
|
-
|
|
24
|
-
## Passos
|
|
25
|
-
|
|
26
|
-
### Step 0 — Preflight
|
|
27
|
-
|
|
28
|
-
Detectar runtime:
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
ls package.json deno.json pyproject.toml 2>/dev/null
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
Detectar service name:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
# Node
|
|
38
|
-
jq -r .name package.json 2>/dev/null
|
|
39
|
-
# Deno (não tem name canônico — usa diretório)
|
|
40
|
-
basename "$(pwd)"
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
Verificar dependências OTel já instaladas:
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
# Node
|
|
47
|
-
jq -r '.dependencies | keys[] | select(startswith("@opentelemetry"))' package.json
|
|
48
|
-
# Deno (verificar imports em arquivos)
|
|
49
|
-
grep -rh 'npm:@opentelemetry\|jsr:@opentelemetry' supabase/functions/ src/ 2>/dev/null | sort -u
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
**Se OTel ausente:** flag para adicionar deps no Output (não instala automaticamente — caller decide).
|
|
53
|
-
|
|
54
|
-
### Step 1 — Análise de cada `target_file`
|
|
55
|
-
|
|
56
|
-
Para cada arquivo:
|
|
57
|
-
|
|
58
|
-
1. Identificar handlers/funções de entrada (HTTP routes, Deno.serve, batch entrypoints, queue consumers)
|
|
59
|
-
2. Identificar code branches (if/else, try/catch, early returns, switch)
|
|
60
|
-
3. Identificar identidades disponíveis (user_id, tenant_id, customer.tier, request.id, etc.)
|
|
61
|
-
4. Identificar erros lançados/capturados (classes de Error, codes)
|
|
62
|
-
|
|
63
|
-
### Step 2 — Gerar instrumentação
|
|
64
|
-
|
|
65
|
-
Para cada handler identificado, produzir patch que:
|
|
66
|
-
|
|
67
|
-
**a) Adiciona setup OTel** (1× por arquivo, no topo):
|
|
68
|
-
```ts
|
|
69
|
-
import { trace, SpanKind, SpanStatusCode } from '@opentelemetry/api' // ou npm:@opentelemetry/api@1.9.0 em Deno
|
|
70
|
-
const tracer = trace.getTracer('<service_name>')
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
**b) Envolve cada handler em `tracer.startActiveSpan`**:
|
|
74
|
-
```ts
|
|
75
|
-
return tracer.startActiveSpan('<handler_name>', { kind: SpanKind.SERVER }, async (span) => {
|
|
76
|
-
// PT-BR: atributos canônicos do request
|
|
77
|
-
span.setAttribute('user.id', req.user?.id ?? 'anonymous')
|
|
78
|
-
span.setAttribute('tenant_id', req.user?.tenant ?? '')
|
|
79
|
-
span.setAttribute('request.id', req.headers['x-request-id'] ?? '')
|
|
80
|
-
span.setAttribute('endpoint', '<route>')
|
|
81
|
-
span.setAttribute('http.method', '<METHOD>')
|
|
82
|
-
span.setAttribute('build_id', process.env.BUILD_ID ?? 'dev')
|
|
83
|
-
|
|
84
|
-
try {
|
|
85
|
-
// ... handler logic existente
|
|
86
|
-
span.setAttribute('result.success', true)
|
|
87
|
-
span.setStatus({ code: SpanStatusCode.OK })
|
|
88
|
-
return result
|
|
89
|
-
} catch (e) {
|
|
90
|
-
span.setAttribute('result.success', false)
|
|
91
|
-
span.setAttribute('error.type', classifyError(e))
|
|
92
|
-
span.setAttribute('error.message', e.message)
|
|
93
|
-
span.setStatus({ code: SpanStatusCode.ERROR })
|
|
94
|
-
throw e
|
|
95
|
-
} finally {
|
|
96
|
-
span.end()
|
|
97
|
-
}
|
|
98
|
-
})
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
**c) Adiciona helper `classifyError`** (1× por arquivo) seguindo enum canônico:
|
|
102
|
-
```ts
|
|
103
|
-
function classifyError(e: any): string {
|
|
104
|
-
if (e.statusCode === 401) return 'auth'
|
|
105
|
-
if (e.statusCode === 403) return 'authz'
|
|
106
|
-
if (e.statusCode === 422) return 'validation'
|
|
107
|
-
if (e.statusCode === 429) return 'rate_limit'
|
|
108
|
-
if (e.code === 'ETIMEDOUT' || e.code === 'ECONNRESET') return 'timeout'
|
|
109
|
-
if (e.code?.startsWith?.('P')) return 'db_conflict' // Prisma errors
|
|
110
|
-
return 'unknown'
|
|
111
|
-
}
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
**d) Em cada branch significativo, emite `branch_taken`**:
|
|
115
|
-
```ts
|
|
116
|
-
if (req.amount > 1_000_00) {
|
|
117
|
-
span.setAttribute('branch_taken', 'high_value')
|
|
118
|
-
// ... logic
|
|
119
|
-
} else {
|
|
120
|
-
span.setAttribute('branch_taken', 'standard')
|
|
121
|
-
// ... logic
|
|
122
|
-
}
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
**e) Em outbound calls, garantir propagação de contexto** (consultar [`distributed-tracing`](../skills/distributed-tracing/SKILL.md)):
|
|
126
|
-
```ts
|
|
127
|
-
import { propagation, context } from '@opentelemetry/api'
|
|
128
|
-
const headers: Record<string, string> = {}
|
|
129
|
-
propagation.inject(context.active(), headers)
|
|
130
|
-
await fetch('<url>', { headers, ... })
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### Step 3 — Validar 4 perguntas ODD
|
|
134
|
-
|
|
135
|
-
Para cada handler instrumentado, checar (consultar [`observability-driven-development`](../skills/observability-driven-development/SKILL.md)):
|
|
136
|
-
|
|
137
|
-
1. ✅ `result.success` setado?
|
|
138
|
-
2. ✅ `build_id` setado?
|
|
139
|
-
3. ✅ identidade (user.id ou tenant_id ou customer.tier) setada?
|
|
140
|
-
4. ✅ `error.type` enum em catch + `branch_taken` em if/else significativo?
|
|
141
|
-
|
|
142
|
-
Se algum NÃO → patch incompleto, completar.
|
|
143
|
-
|
|
144
|
-
### Step 4 — Output
|
|
145
|
-
|
|
146
|
-
Imprimir tabela de patches gerados:
|
|
147
|
-
|
|
148
|
-
```
|
|
149
|
-
═══════════════════════════════════════════════════════════
|
|
150
|
-
OBSERVABILITY-INSTRUMENTER · {service_name}
|
|
151
|
-
runtime: {node|deno} · OTel: {installed|missing}
|
|
152
|
-
═══════════════════════════════════════════════════════════
|
|
153
|
-
|
|
154
|
-
## Patches gerados
|
|
155
|
-
|
|
156
|
-
| Arquivo | Handler | ODD 4/4 | Atributos |
|
|
157
|
-
|---------|---------|---------|-----------|
|
|
158
|
-
| src/orders/handler.ts | placeOrder | ✓ | user.id, tenant_id, request.id, result.success, error.type, build_id, branch_taken (3) |
|
|
159
|
-
| src/orders/handler.ts | cancelOrder | ✓ | user.id, tenant_id, request.id, result.success, error.type, build_id |
|
|
160
|
-
| supabase/functions/process-emails/index.ts | (root) | ✓ | request.id, build_id, user.id, email.batch_size, result.success, error.type |
|
|
161
|
-
|
|
162
|
-
## Deps necessárias (se faltando)
|
|
163
|
-
|
|
164
|
-
```bash
|
|
165
|
-
# Node
|
|
166
|
-
npm install @opentelemetry/api @opentelemetry/sdk-node \
|
|
167
|
-
@opentelemetry/exporter-trace-otlp-http \
|
|
168
|
-
@opentelemetry/auto-instrumentations-node
|
|
169
|
-
|
|
170
|
-
# Deno (Edge Functions) — imports inline
|
|
171
|
-
import { trace } from 'npm:@opentelemetry/api@1.9.0'
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
## SDK setup necessário (entry-point)
|
|
175
|
-
|
|
176
|
-
Cole em `instrumentation.ts` (Node) ou no topo da Edge Function:
|
|
177
|
-
|
|
178
|
-
{snippet do skill opentelemetry-standard}
|
|
179
|
-
|
|
180
|
-
## Próximos passos
|
|
181
|
-
|
|
182
|
-
1. Rodar `kit gates run` (auditoria de descrição/sintaxe)
|
|
183
|
-
2. Smoke local: enviar request e verificar `select * from spans where service_name='{name}'`
|
|
184
|
-
3. Comparar `build_id` antes/depois deploy
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
## Quando NÃO invocar
|
|
188
|
-
|
|
189
|
-
- Código já está instrumentado e o user só quer adicionar 1 atributo — `Edit` direto.
|
|
190
|
-
- Código de teste/CI — não precisa de spans em prod.
|
|
191
|
-
- Funções utilitárias puras (sem I/O) — instrumentação sem benefício.
|
|
1
|
+
---
|
|
2
|
+
name: observability-instrumenter
|
|
3
|
+
tier: specialized
|
|
4
|
+
description: Instrumenta código com OpenTelemetry — gera spans, atributos canônicos (user.id, tenant_id, request.id, result.success, error.type, build_id) seguindo skill structured-events.
|
|
5
|
+
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
+
color: yellow
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Você é o instrumentador de observabilidade. Recebe caminho de código + endpoints/handlers que precisam ser instrumentados e produz patches com OTel spans + atributos canônicos. Você consulta as skills [`structured-events`](../skills/structured-events/SKILL.md), [`distributed-tracing`](../skills/distributed-tracing/SKILL.md) e [`opentelemetry-standard`](../skills/opentelemetry-standard/SKILL.md) — conhecimento autoritativo sobre wide events e OTel.
|
|
10
|
+
|
|
11
|
+
**Compat:** Full em todos os IDEs (filesystem-only). Veja [COMPATIBILITY.md](../COMPATIBILITY.md).
|
|
12
|
+
|
|
13
|
+
## Por que existe
|
|
14
|
+
|
|
15
|
+
Instrumentação manual é trabalho repetitivo e pulável — engenheiros mergem PR sem spans, sem `result.success`, sem `error.type`. Quando incident acontece, cego. Este agent garante padrão canônico em todo handler/Edge Function/job, com atributos consistentes, code branches cobertos, e validação ODD das 4 perguntas (Cap 11).
|
|
16
|
+
|
|
17
|
+
## Inputs esperados (do caller)
|
|
18
|
+
|
|
19
|
+
- `target_files`: lista de arquivos com handlers/Edge Functions/jobs a instrumentar (caminhos relativos ao project root)
|
|
20
|
+
- (Opcional) `endpoints`: lista de endpoints/rotas a cobrir — se vazio, agent detecta via grep
|
|
21
|
+
- (Opcional) `runtime`: `node` | `deno` | `python` — se omitido, detecta via package.json/deno.json/pyproject.toml
|
|
22
|
+
- (Opcional) `service_name`: nome canônico do service (ex: `orders-api`, `edge-process-emails`) — se omitido, deriva de `package.json#name` ou diretório
|
|
23
|
+
|
|
24
|
+
## Passos
|
|
25
|
+
|
|
26
|
+
### Step 0 — Preflight
|
|
27
|
+
|
|
28
|
+
Detectar runtime:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
ls package.json deno.json pyproject.toml 2>/dev/null
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Detectar service name:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Node
|
|
38
|
+
jq -r .name package.json 2>/dev/null
|
|
39
|
+
# Deno (não tem name canônico — usa diretório)
|
|
40
|
+
basename "$(pwd)"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Verificar dependências OTel já instaladas:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Node
|
|
47
|
+
jq -r '.dependencies | keys[] | select(startswith("@opentelemetry"))' package.json
|
|
48
|
+
# Deno (verificar imports em arquivos)
|
|
49
|
+
grep -rh 'npm:@opentelemetry\|jsr:@opentelemetry' supabase/functions/ src/ 2>/dev/null | sort -u
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Se OTel ausente:** flag para adicionar deps no Output (não instala automaticamente — caller decide).
|
|
53
|
+
|
|
54
|
+
### Step 1 — Análise de cada `target_file`
|
|
55
|
+
|
|
56
|
+
Para cada arquivo:
|
|
57
|
+
|
|
58
|
+
1. Identificar handlers/funções de entrada (HTTP routes, Deno.serve, batch entrypoints, queue consumers)
|
|
59
|
+
2. Identificar code branches (if/else, try/catch, early returns, switch)
|
|
60
|
+
3. Identificar identidades disponíveis (user_id, tenant_id, customer.tier, request.id, etc.)
|
|
61
|
+
4. Identificar erros lançados/capturados (classes de Error, codes)
|
|
62
|
+
|
|
63
|
+
### Step 2 — Gerar instrumentação
|
|
64
|
+
|
|
65
|
+
Para cada handler identificado, produzir patch que:
|
|
66
|
+
|
|
67
|
+
**a) Adiciona setup OTel** (1× por arquivo, no topo):
|
|
68
|
+
```ts
|
|
69
|
+
import { trace, SpanKind, SpanStatusCode } from '@opentelemetry/api' // ou npm:@opentelemetry/api@1.9.0 em Deno
|
|
70
|
+
const tracer = trace.getTracer('<service_name>')
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**b) Envolve cada handler em `tracer.startActiveSpan`**:
|
|
74
|
+
```ts
|
|
75
|
+
return tracer.startActiveSpan('<handler_name>', { kind: SpanKind.SERVER }, async (span) => {
|
|
76
|
+
// PT-BR: atributos canônicos do request
|
|
77
|
+
span.setAttribute('user.id', req.user?.id ?? 'anonymous')
|
|
78
|
+
span.setAttribute('tenant_id', req.user?.tenant ?? '')
|
|
79
|
+
span.setAttribute('request.id', req.headers['x-request-id'] ?? '')
|
|
80
|
+
span.setAttribute('endpoint', '<route>')
|
|
81
|
+
span.setAttribute('http.method', '<METHOD>')
|
|
82
|
+
span.setAttribute('build_id', process.env.BUILD_ID ?? 'dev')
|
|
83
|
+
|
|
84
|
+
try {
|
|
85
|
+
// ... handler logic existente
|
|
86
|
+
span.setAttribute('result.success', true)
|
|
87
|
+
span.setStatus({ code: SpanStatusCode.OK })
|
|
88
|
+
return result
|
|
89
|
+
} catch (e) {
|
|
90
|
+
span.setAttribute('result.success', false)
|
|
91
|
+
span.setAttribute('error.type', classifyError(e))
|
|
92
|
+
span.setAttribute('error.message', e.message)
|
|
93
|
+
span.setStatus({ code: SpanStatusCode.ERROR })
|
|
94
|
+
throw e
|
|
95
|
+
} finally {
|
|
96
|
+
span.end()
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**c) Adiciona helper `classifyError`** (1× por arquivo) seguindo enum canônico:
|
|
102
|
+
```ts
|
|
103
|
+
function classifyError(e: any): string {
|
|
104
|
+
if (e.statusCode === 401) return 'auth'
|
|
105
|
+
if (e.statusCode === 403) return 'authz'
|
|
106
|
+
if (e.statusCode === 422) return 'validation'
|
|
107
|
+
if (e.statusCode === 429) return 'rate_limit'
|
|
108
|
+
if (e.code === 'ETIMEDOUT' || e.code === 'ECONNRESET') return 'timeout'
|
|
109
|
+
if (e.code?.startsWith?.('P')) return 'db_conflict' // Prisma errors
|
|
110
|
+
return 'unknown'
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**d) Em cada branch significativo, emite `branch_taken`**:
|
|
115
|
+
```ts
|
|
116
|
+
if (req.amount > 1_000_00) {
|
|
117
|
+
span.setAttribute('branch_taken', 'high_value')
|
|
118
|
+
// ... logic
|
|
119
|
+
} else {
|
|
120
|
+
span.setAttribute('branch_taken', 'standard')
|
|
121
|
+
// ... logic
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**e) Em outbound calls, garantir propagação de contexto** (consultar [`distributed-tracing`](../skills/distributed-tracing/SKILL.md)):
|
|
126
|
+
```ts
|
|
127
|
+
import { propagation, context } from '@opentelemetry/api'
|
|
128
|
+
const headers: Record<string, string> = {}
|
|
129
|
+
propagation.inject(context.active(), headers)
|
|
130
|
+
await fetch('<url>', { headers, ... })
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Step 3 — Validar 4 perguntas ODD
|
|
134
|
+
|
|
135
|
+
Para cada handler instrumentado, checar (consultar [`observability-driven-development`](../skills/observability-driven-development/SKILL.md)):
|
|
136
|
+
|
|
137
|
+
1. ✅ `result.success` setado?
|
|
138
|
+
2. ✅ `build_id` setado?
|
|
139
|
+
3. ✅ identidade (user.id ou tenant_id ou customer.tier) setada?
|
|
140
|
+
4. ✅ `error.type` enum em catch + `branch_taken` em if/else significativo?
|
|
141
|
+
|
|
142
|
+
Se algum NÃO → patch incompleto, completar.
|
|
143
|
+
|
|
144
|
+
### Step 4 — Output
|
|
145
|
+
|
|
146
|
+
Imprimir tabela de patches gerados:
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
═══════════════════════════════════════════════════════════
|
|
150
|
+
OBSERVABILITY-INSTRUMENTER · {service_name}
|
|
151
|
+
runtime: {node|deno} · OTel: {installed|missing}
|
|
152
|
+
═══════════════════════════════════════════════════════════
|
|
153
|
+
|
|
154
|
+
## Patches gerados
|
|
155
|
+
|
|
156
|
+
| Arquivo | Handler | ODD 4/4 | Atributos |
|
|
157
|
+
|---------|---------|---------|-----------|
|
|
158
|
+
| src/orders/handler.ts | placeOrder | ✓ | user.id, tenant_id, request.id, result.success, error.type, build_id, branch_taken (3) |
|
|
159
|
+
| src/orders/handler.ts | cancelOrder | ✓ | user.id, tenant_id, request.id, result.success, error.type, build_id |
|
|
160
|
+
| supabase/functions/process-emails/index.ts | (root) | ✓ | request.id, build_id, user.id, email.batch_size, result.success, error.type |
|
|
161
|
+
|
|
162
|
+
## Deps necessárias (se faltando)
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# Node
|
|
166
|
+
npm install @opentelemetry/api @opentelemetry/sdk-node \
|
|
167
|
+
@opentelemetry/exporter-trace-otlp-http \
|
|
168
|
+
@opentelemetry/auto-instrumentations-node
|
|
169
|
+
|
|
170
|
+
# Deno (Edge Functions) — imports inline
|
|
171
|
+
import { trace } from 'npm:@opentelemetry/api@1.9.0'
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## SDK setup necessário (entry-point)
|
|
175
|
+
|
|
176
|
+
Cole em `instrumentation.ts` (Node) ou no topo da Edge Function:
|
|
177
|
+
|
|
178
|
+
{snippet do skill opentelemetry-standard}
|
|
179
|
+
|
|
180
|
+
## Próximos passos
|
|
181
|
+
|
|
182
|
+
1. Rodar `kit gates run` (auditoria de descrição/sintaxe)
|
|
183
|
+
2. Smoke local: enviar request e verificar `select * from spans where service_name='{name}'`
|
|
184
|
+
3. Comparar `build_id` antes/depois deploy
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Quando NÃO invocar
|
|
188
|
+
|
|
189
|
+
- Código já está instrumentado e o user só quer adicionar 1 atributo — `Edit` direto.
|
|
190
|
+
- Código de teste/CI — não precisa de spans em prod.
|
|
191
|
+
- Funções utilitárias puras (sem I/O) — instrumentação sem benefício.
|