@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,92 +1,92 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// hook-version: 1.30.5
|
|
3
|
-
// kit-mcp · Kit Attribution Reminder (UserPromptSubmit)
|
|
4
|
-
//
|
|
5
|
-
// Injeta `additionalContext` no envelope do prompt do usuário com uma
|
|
6
|
-
// diretiva ENXUTA: pedir 1 linha de atribuição no fim da resposta.
|
|
7
|
-
//
|
|
8
|
-
// v1.30.3 (#3): diretiva reduzida de ~50 linhas para ~7 — o bloco longo
|
|
9
|
-
// anterior custava ~1,5 KB de ruído por prompt e treinava compliance
|
|
10
|
-
// theater. Mantém a confirmação positiva ("kit foi usado?") com fração
|
|
11
|
-
// do custo de contexto.
|
|
12
|
-
// v1.30.4: a linha agora AGRUPA por tipo (agents/skills/commands/mcp) e
|
|
13
|
-
// nomeia cada recurso — antes "<recursos usados>" era vago e escondia
|
|
14
|
-
// quais agents/subagents rodaram.
|
|
15
|
-
// v1.30.5: distinção explícita — rodar scripts/código do kit via `node`/Bash
|
|
16
|
-
// NÃO é uso de MCP tool. Só conta `mcp` se a tool mcp__kit__* foi invocada
|
|
17
|
-
// de fato. Corrige mis-atribuição ("mcp: kit" sem ter chamado a tool).
|
|
18
|
-
//
|
|
19
|
-
// Objetivo: feedback textual leve de uso real do kit-mcp.
|
|
20
|
-
//
|
|
21
|
-
// Pipeline: UserPromptSubmit hook → reads stdin envelope → writes JSON com
|
|
22
|
-
// `{ continue: true, hookSpecificOutput: { hookEventName: "UserPromptSubmit",
|
|
23
|
-
// additionalContext: "<diretiva>" } }` → exit 0.
|
|
24
|
-
//
|
|
25
|
-
// SOFT failure: qualquer erro → exit 0 sem bloquear. Skip se
|
|
26
|
-
// KIT_MCP_NO_ATTRIBUTION=1.
|
|
27
|
-
//
|
|
28
|
-
// Module format: CommonJS (.cjs) — compatível com qualquer setup Node.
|
|
29
|
-
//
|
|
30
|
-
// Enable em settings.json (project ou user):
|
|
31
|
-
// {
|
|
32
|
-
// "hooks": {
|
|
33
|
-
// "UserPromptSubmit": [{
|
|
34
|
-
// "matcher": "*",
|
|
35
|
-
// "hooks": [{
|
|
36
|
-
// "type": "command",
|
|
37
|
-
// "command": "node /abs/path/to/kit-attribution-reminder.cjs"
|
|
38
|
-
// }]
|
|
39
|
-
// }]
|
|
40
|
-
// }
|
|
41
|
-
// }
|
|
42
|
-
|
|
43
|
-
'use strict';
|
|
44
|
-
|
|
45
|
-
// Opt-out via env var
|
|
46
|
-
if (process.env.KIT_MCP_NO_ATTRIBUTION === '1' || process.env.KIT_MCP_NO_ATTRIBUTION === 'true') {
|
|
47
|
-
process.exit(0);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const DIRECTIVE = [
|
|
51
|
-
'🔧 kit-mcp — termine a resposta com UMA linha, agrupando por tipo e',
|
|
52
|
-
'NOMEANDO cada recurso usado neste turno:',
|
|
53
|
-
' "🔧 kit-mcp · agents: <nomes> · skills: <nomes> · commands: <nomes> · mcp: <tools>"',
|
|
54
|
-
'Conta SÓ o que você REALMENTE invocou neste turno:',
|
|
55
|
-
'• agents = Task(subagent_type="…") com um agent do kit.',
|
|
56
|
-
'• skills = skill do kit auto-triggada/consultada (supabase-*/legacy-*/…).',
|
|
57
|
-
'• commands = /slash-command do kit executado.',
|
|
58
|
-
'• mcp = tool mcp__kit__* chamada de fato (a tool MCP em si).',
|
|
59
|
-
'NÃO conta — reporte "nenhum recurso usado" se só fez isto:',
|
|
60
|
-
'• Bash/Edit/Read/Write/Grep/Glob nativos.',
|
|
61
|
-
'• rodar scripts ou o código do servidor kit via `node`/Bash — mesmo',
|
|
62
|
-
' sendo arquivos do kit, isso é Bash, NÃO é invocar a MCP tool.',
|
|
63
|
-
'• skills genéricas da Anthropic (anthropic-skills:*, engineering:*, …).',
|
|
64
|
-
'Nenhum recurso → "🔧 kit-mcp: nenhum recurso usado".',
|
|
65
|
-
'Disable: env KIT_MCP_NO_ATTRIBUTION=1.',
|
|
66
|
-
].join('\n');
|
|
67
|
-
|
|
68
|
-
let input = '';
|
|
69
|
-
const stdinTimeout = setTimeout(() => process.exit(0), 3000);
|
|
70
|
-
process.stdin.setEncoding('utf8');
|
|
71
|
-
process.stdin.on('data', (chunk) => { input += chunk; });
|
|
72
|
-
process.stdin.on('end', () => {
|
|
73
|
-
clearTimeout(stdinTimeout);
|
|
74
|
-
try {
|
|
75
|
-
// Aceita envelope vazio; só precisamos retornar o JSON com additionalContext.
|
|
76
|
-
JSON.parse(input || '{}');
|
|
77
|
-
} catch {
|
|
78
|
-
// Envelope inválido — não bloquear; sair sem inject.
|
|
79
|
-
process.exit(0);
|
|
80
|
-
}
|
|
81
|
-
const payload = JSON.stringify({
|
|
82
|
-
continue: true,
|
|
83
|
-
hookSpecificOutput: {
|
|
84
|
-
hookEventName: 'UserPromptSubmit',
|
|
85
|
-
additionalContext: DIRECTIVE,
|
|
86
|
-
},
|
|
87
|
-
});
|
|
88
|
-
// SEC-13-05 (category A): flush antes de exit
|
|
89
|
-
process.stdout.write(payload, () => process.exit(0));
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
process.stdin.on('error', () => process.exit(0));
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// hook-version: 1.30.5
|
|
3
|
+
// kit-mcp · Kit Attribution Reminder (UserPromptSubmit)
|
|
4
|
+
//
|
|
5
|
+
// Injeta `additionalContext` no envelope do prompt do usuário com uma
|
|
6
|
+
// diretiva ENXUTA: pedir 1 linha de atribuição no fim da resposta.
|
|
7
|
+
//
|
|
8
|
+
// v1.30.3 (#3): diretiva reduzida de ~50 linhas para ~7 — o bloco longo
|
|
9
|
+
// anterior custava ~1,5 KB de ruído por prompt e treinava compliance
|
|
10
|
+
// theater. Mantém a confirmação positiva ("kit foi usado?") com fração
|
|
11
|
+
// do custo de contexto.
|
|
12
|
+
// v1.30.4: a linha agora AGRUPA por tipo (agents/skills/commands/mcp) e
|
|
13
|
+
// nomeia cada recurso — antes "<recursos usados>" era vago e escondia
|
|
14
|
+
// quais agents/subagents rodaram.
|
|
15
|
+
// v1.30.5: distinção explícita — rodar scripts/código do kit via `node`/Bash
|
|
16
|
+
// NÃO é uso de MCP tool. Só conta `mcp` se a tool mcp__kit__* foi invocada
|
|
17
|
+
// de fato. Corrige mis-atribuição ("mcp: kit" sem ter chamado a tool).
|
|
18
|
+
//
|
|
19
|
+
// Objetivo: feedback textual leve de uso real do kit-mcp.
|
|
20
|
+
//
|
|
21
|
+
// Pipeline: UserPromptSubmit hook → reads stdin envelope → writes JSON com
|
|
22
|
+
// `{ continue: true, hookSpecificOutput: { hookEventName: "UserPromptSubmit",
|
|
23
|
+
// additionalContext: "<diretiva>" } }` → exit 0.
|
|
24
|
+
//
|
|
25
|
+
// SOFT failure: qualquer erro → exit 0 sem bloquear. Skip se
|
|
26
|
+
// KIT_MCP_NO_ATTRIBUTION=1.
|
|
27
|
+
//
|
|
28
|
+
// Module format: CommonJS (.cjs) — compatível com qualquer setup Node.
|
|
29
|
+
//
|
|
30
|
+
// Enable em settings.json (project ou user):
|
|
31
|
+
// {
|
|
32
|
+
// "hooks": {
|
|
33
|
+
// "UserPromptSubmit": [{
|
|
34
|
+
// "matcher": "*",
|
|
35
|
+
// "hooks": [{
|
|
36
|
+
// "type": "command",
|
|
37
|
+
// "command": "node /abs/path/to/kit-attribution-reminder.cjs"
|
|
38
|
+
// }]
|
|
39
|
+
// }]
|
|
40
|
+
// }
|
|
41
|
+
// }
|
|
42
|
+
|
|
43
|
+
'use strict';
|
|
44
|
+
|
|
45
|
+
// Opt-out via env var
|
|
46
|
+
if (process.env.KIT_MCP_NO_ATTRIBUTION === '1' || process.env.KIT_MCP_NO_ATTRIBUTION === 'true') {
|
|
47
|
+
process.exit(0);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const DIRECTIVE = [
|
|
51
|
+
'🔧 kit-mcp — termine a resposta com UMA linha, agrupando por tipo e',
|
|
52
|
+
'NOMEANDO cada recurso usado neste turno:',
|
|
53
|
+
' "🔧 kit-mcp · agents: <nomes> · skills: <nomes> · commands: <nomes> · mcp: <tools>"',
|
|
54
|
+
'Conta SÓ o que você REALMENTE invocou neste turno:',
|
|
55
|
+
'• agents = Task(subagent_type="…") com um agent do kit.',
|
|
56
|
+
'• skills = skill do kit auto-triggada/consultada (supabase-*/legacy-*/…).',
|
|
57
|
+
'• commands = /slash-command do kit executado.',
|
|
58
|
+
'• mcp = tool mcp__kit__* chamada de fato (a tool MCP em si).',
|
|
59
|
+
'NÃO conta — reporte "nenhum recurso usado" se só fez isto:',
|
|
60
|
+
'• Bash/Edit/Read/Write/Grep/Glob nativos.',
|
|
61
|
+
'• rodar scripts ou o código do servidor kit via `node`/Bash — mesmo',
|
|
62
|
+
' sendo arquivos do kit, isso é Bash, NÃO é invocar a MCP tool.',
|
|
63
|
+
'• skills genéricas da Anthropic (anthropic-skills:*, engineering:*, …).',
|
|
64
|
+
'Nenhum recurso → "🔧 kit-mcp: nenhum recurso usado".',
|
|
65
|
+
'Disable: env KIT_MCP_NO_ATTRIBUTION=1.',
|
|
66
|
+
].join('\n');
|
|
67
|
+
|
|
68
|
+
let input = '';
|
|
69
|
+
const stdinTimeout = setTimeout(() => process.exit(0), 3000);
|
|
70
|
+
process.stdin.setEncoding('utf8');
|
|
71
|
+
process.stdin.on('data', (chunk) => { input += chunk; });
|
|
72
|
+
process.stdin.on('end', () => {
|
|
73
|
+
clearTimeout(stdinTimeout);
|
|
74
|
+
try {
|
|
75
|
+
// Aceita envelope vazio; só precisamos retornar o JSON com additionalContext.
|
|
76
|
+
JSON.parse(input || '{}');
|
|
77
|
+
} catch {
|
|
78
|
+
// Envelope inválido — não bloquear; sair sem inject.
|
|
79
|
+
process.exit(0);
|
|
80
|
+
}
|
|
81
|
+
const payload = JSON.stringify({
|
|
82
|
+
continue: true,
|
|
83
|
+
hookSpecificOutput: {
|
|
84
|
+
hookEventName: 'UserPromptSubmit',
|
|
85
|
+
additionalContext: DIRECTIVE,
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
// SEC-13-05 (category A): flush antes de exit
|
|
89
|
+
process.stdout.write(payload, () => process.exit(0));
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
process.stdin.on('error', () => process.exit(0));
|
package/kit/hooks/kit-router.cjs
CHANGED
|
@@ -1,137 +1,137 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// hook-version: 1.30.4
|
|
3
|
-
// kit-mcp · Kit Router (UserPromptSubmit)
|
|
4
|
-
//
|
|
5
|
-
// Lê o prompt do usuário, detecta domínio(s) canônico(s) por keyword e injeta
|
|
6
|
-
// `additionalContext` com uma DIRETIVA FIRME de delegação: para trabalho
|
|
7
|
-
// multi-passo do domínio, usar Task(subagent_type=...) em vez de improvisar
|
|
8
|
-
// inline.
|
|
9
|
-
//
|
|
10
|
-
// Motivação: o kit tem 67 agents que quase nunca eram invocados — o modelo
|
|
11
|
-
// resolvia tudo inline. Este hook faz o roteamento se materializar NO MOMENTO
|
|
12
|
-
// DA DECISÃO (todo prompt relevante), que é o lever mais forte disponível no
|
|
13
|
-
// sistema de hooks do Claude Code sem bloquear o prompt.
|
|
14
|
-
//
|
|
15
|
-
// Pipeline: UserPromptSubmit → lê stdin envelope → casa keywords no campo
|
|
16
|
-
// `prompt` → escreve JSON { continue:true, hookSpecificOutput:{ ...,
|
|
17
|
-
// additionalContext } } → exit 0. Sem match → exit 0 sem injetar (prompt limpo).
|
|
18
|
-
//
|
|
19
|
-
// SOFT failure: qualquer erro → exit 0 sem bloquear. Skip se KIT_MCP_NO_ROUTER=1.
|
|
20
|
-
// CommonJS (.cjs) — compatível com qualquer setup Node.
|
|
21
|
-
|
|
22
|
-
'use strict';
|
|
23
|
-
|
|
24
|
-
if (process.env.KIT_MCP_NO_ROUTER === '1' || process.env.KIT_MCP_NO_ROUTER === 'true') {
|
|
25
|
-
process.exit(0);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// Tabela domínio → { keywords, entrypoint (suíte/commands), agents canônicos }.
|
|
29
|
-
// keywords são casadas como substring no prompt em lowercase.
|
|
30
|
-
const DOMAINS = [
|
|
31
|
-
{
|
|
32
|
-
name: 'Supabase',
|
|
33
|
-
keywords: ['supabase', 'rls', 'row level security', 'edge function', 'pgvector',
|
|
34
|
-
'custom claim', 'postgres role', 'realtime', ' migration', 'migração', 'supavisor'],
|
|
35
|
-
entrypoint: '/supabase',
|
|
36
|
-
agents: ['supabase-architect', 'supabase-rls-writer', 'supabase-migration-writer',
|
|
37
|
-
'supabase-edge-fn-writer'],
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
name: 'Multi-tenant SaaS',
|
|
41
|
-
keywords: ['multi-tenant', 'multi tenant', 'multitenant', 'b2b saas', 'tenant',
|
|
42
|
-
'rbac', 'super-admin', 'super admin', 'org invite', 'convite de membro', 'lgpd'],
|
|
43
|
-
entrypoint: '/multi-tenant',
|
|
44
|
-
agents: ['b2b-saas-architect', 'multi-tenant-rls-writer', 'org-onboarding-implementer',
|
|
45
|
-
'invite-flow-implementer'],
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
name: 'Legacy / refactor',
|
|
49
|
-
keywords: ['refactor', 'refatorar', 'código legado', 'codigo legado', 'legacy',
|
|
50
|
-
'characterization', 'caracterização', 'seam', 'sem testes', 'sem teste'],
|
|
51
|
-
entrypoint: '/legacy',
|
|
52
|
-
agents: ['seam-finder', 'legacy-characterizer', 'refactor-safety-auditor'],
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
name: 'Observabilidade',
|
|
56
|
-
keywords: ['observability', 'observabilidade', 'slo', 'golden signal', 'tracing',
|
|
57
|
-
'telemetr', 'burn rate', 'opentelemetry', 'otel', 'error budget'],
|
|
58
|
-
entrypoint: '/observabilidade',
|
|
59
|
-
agents: ['observability-instrumenter', 'golden-signals-instrumenter', 'slo-engineer'],
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
name: 'SRE',
|
|
63
|
-
keywords: ['postmortem', 'post-mortem', 'post mortem', 'toil', ' prr',
|
|
64
|
-
'production readiness', 'incident', 'incidente', 'release pipeline', 'runbook'],
|
|
65
|
-
entrypoint: '/sre',
|
|
66
|
-
agents: ['postmortem-writer', 'toil-auditor', 'prr-conductor', 'incident-investigator'],
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
name: 'Sistemas distribuídos (DDIA)',
|
|
70
|
-
keywords: ['consistency', 'consistência', 'replication', 'replicação', 'replica',
|
|
71
|
-
'schema evolution', 'evolução de schema', 'cdc', 'hot tenant', 'tenant quente'],
|
|
72
|
-
entrypoint: '/dados-distribuidos',
|
|
73
|
-
agents: ['auditor-consistencia-isolamento', 'detector-tenant-quente',
|
|
74
|
-
'validador-evolucao-schema'],
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
name: 'Workflow de fases / milestone',
|
|
78
|
-
keywords: ['planejar fase', 'executar fase', 'milestone', 'marco', 'roadmap',
|
|
79
|
-
'nova fase', 'plano de fase'],
|
|
80
|
-
entrypoint: '/planejar-fase, /executar-fase',
|
|
81
|
-
agents: ['planner', 'executor', 'verifier'],
|
|
82
|
-
},
|
|
83
|
-
];
|
|
84
|
-
|
|
85
|
-
function buildDirective(matched) {
|
|
86
|
-
const lines = [
|
|
87
|
-
'🧭 kit-mcp router — o prompt casa ' +
|
|
88
|
-
(matched.length === 1 ? 'o domínio canônico' : 'domínios canônicos') + ':',
|
|
89
|
-
];
|
|
90
|
-
for (const d of matched) {
|
|
91
|
-
lines.push(
|
|
92
|
-
`• ${d.name} → entrypoint ${d.entrypoint} · agents: ${d.agents.join(', ')}`,
|
|
93
|
-
);
|
|
94
|
-
}
|
|
95
|
-
lines.push(
|
|
96
|
-
'REGRA: para trabalho multi-passo destes domínios, DELEGUE via',
|
|
97
|
-
'Task(subagent_type="<agent>") em vez de implementar inline. Não improvise',
|
|
98
|
-
'o que um agent canônico já cobre — o valor do kit ESTÁ nos agents.',
|
|
99
|
-
'Exceção: ação trivial de 1 passo (rename, fix de 1 linha, ajuste de texto)',
|
|
100
|
-
'→ resolva inline. Disable: env KIT_MCP_NO_ROUTER=1.',
|
|
101
|
-
);
|
|
102
|
-
return lines.join('\n');
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
let input = '';
|
|
106
|
-
const stdinTimeout = setTimeout(() => process.exit(0), 3000);
|
|
107
|
-
process.stdin.setEncoding('utf8');
|
|
108
|
-
process.stdin.on('data', (chunk) => { input += chunk; });
|
|
109
|
-
process.stdin.on('end', () => {
|
|
110
|
-
clearTimeout(stdinTimeout);
|
|
111
|
-
let envelope;
|
|
112
|
-
try {
|
|
113
|
-
envelope = JSON.parse(input || '{}');
|
|
114
|
-
} catch {
|
|
115
|
-
process.exit(0); // envelope inválido — não bloquear
|
|
116
|
-
}
|
|
117
|
-
// O campo do prompt varia entre versões — aceitar os nomes plausíveis.
|
|
118
|
-
const prompt = String(
|
|
119
|
-
envelope.prompt || envelope.user_prompt || envelope.text || '',
|
|
120
|
-
).toLowerCase();
|
|
121
|
-
if (!prompt) process.exit(0);
|
|
122
|
-
|
|
123
|
-
const matched = DOMAINS.filter((d) => d.keywords.some((k) => prompt.includes(k)));
|
|
124
|
-
if (matched.length === 0) process.exit(0); // sem domínio — prompt limpo
|
|
125
|
-
|
|
126
|
-
const payload = JSON.stringify({
|
|
127
|
-
continue: true,
|
|
128
|
-
hookSpecificOutput: {
|
|
129
|
-
hookEventName: 'UserPromptSubmit',
|
|
130
|
-
additionalContext: buildDirective(matched),
|
|
131
|
-
},
|
|
132
|
-
});
|
|
133
|
-
// flush antes de exit
|
|
134
|
-
process.stdout.write(payload, () => process.exit(0));
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
process.stdin.on('error', () => process.exit(0));
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// hook-version: 1.30.4
|
|
3
|
+
// kit-mcp · Kit Router (UserPromptSubmit)
|
|
4
|
+
//
|
|
5
|
+
// Lê o prompt do usuário, detecta domínio(s) canônico(s) por keyword e injeta
|
|
6
|
+
// `additionalContext` com uma DIRETIVA FIRME de delegação: para trabalho
|
|
7
|
+
// multi-passo do domínio, usar Task(subagent_type=...) em vez de improvisar
|
|
8
|
+
// inline.
|
|
9
|
+
//
|
|
10
|
+
// Motivação: o kit tem 67 agents que quase nunca eram invocados — o modelo
|
|
11
|
+
// resolvia tudo inline. Este hook faz o roteamento se materializar NO MOMENTO
|
|
12
|
+
// DA DECISÃO (todo prompt relevante), que é o lever mais forte disponível no
|
|
13
|
+
// sistema de hooks do Claude Code sem bloquear o prompt.
|
|
14
|
+
//
|
|
15
|
+
// Pipeline: UserPromptSubmit → lê stdin envelope → casa keywords no campo
|
|
16
|
+
// `prompt` → escreve JSON { continue:true, hookSpecificOutput:{ ...,
|
|
17
|
+
// additionalContext } } → exit 0. Sem match → exit 0 sem injetar (prompt limpo).
|
|
18
|
+
//
|
|
19
|
+
// SOFT failure: qualquer erro → exit 0 sem bloquear. Skip se KIT_MCP_NO_ROUTER=1.
|
|
20
|
+
// CommonJS (.cjs) — compatível com qualquer setup Node.
|
|
21
|
+
|
|
22
|
+
'use strict';
|
|
23
|
+
|
|
24
|
+
if (process.env.KIT_MCP_NO_ROUTER === '1' || process.env.KIT_MCP_NO_ROUTER === 'true') {
|
|
25
|
+
process.exit(0);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Tabela domínio → { keywords, entrypoint (suíte/commands), agents canônicos }.
|
|
29
|
+
// keywords são casadas como substring no prompt em lowercase.
|
|
30
|
+
const DOMAINS = [
|
|
31
|
+
{
|
|
32
|
+
name: 'Supabase',
|
|
33
|
+
keywords: ['supabase', 'rls', 'row level security', 'edge function', 'pgvector',
|
|
34
|
+
'custom claim', 'postgres role', 'realtime', ' migration', 'migração', 'supavisor'],
|
|
35
|
+
entrypoint: '/supabase',
|
|
36
|
+
agents: ['supabase-architect', 'supabase-rls-writer', 'supabase-migration-writer',
|
|
37
|
+
'supabase-edge-fn-writer'],
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'Multi-tenant SaaS',
|
|
41
|
+
keywords: ['multi-tenant', 'multi tenant', 'multitenant', 'b2b saas', 'tenant',
|
|
42
|
+
'rbac', 'super-admin', 'super admin', 'org invite', 'convite de membro', 'lgpd'],
|
|
43
|
+
entrypoint: '/multi-tenant',
|
|
44
|
+
agents: ['b2b-saas-architect', 'multi-tenant-rls-writer', 'org-onboarding-implementer',
|
|
45
|
+
'invite-flow-implementer'],
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'Legacy / refactor',
|
|
49
|
+
keywords: ['refactor', 'refatorar', 'código legado', 'codigo legado', 'legacy',
|
|
50
|
+
'characterization', 'caracterização', 'seam', 'sem testes', 'sem teste'],
|
|
51
|
+
entrypoint: '/legacy',
|
|
52
|
+
agents: ['seam-finder', 'legacy-characterizer', 'refactor-safety-auditor'],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'Observabilidade',
|
|
56
|
+
keywords: ['observability', 'observabilidade', 'slo', 'golden signal', 'tracing',
|
|
57
|
+
'telemetr', 'burn rate', 'opentelemetry', 'otel', 'error budget'],
|
|
58
|
+
entrypoint: '/observabilidade',
|
|
59
|
+
agents: ['observability-instrumenter', 'golden-signals-instrumenter', 'slo-engineer'],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'SRE',
|
|
63
|
+
keywords: ['postmortem', 'post-mortem', 'post mortem', 'toil', ' prr',
|
|
64
|
+
'production readiness', 'incident', 'incidente', 'release pipeline', 'runbook'],
|
|
65
|
+
entrypoint: '/sre',
|
|
66
|
+
agents: ['postmortem-writer', 'toil-auditor', 'prr-conductor', 'incident-investigator'],
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'Sistemas distribuídos (DDIA)',
|
|
70
|
+
keywords: ['consistency', 'consistência', 'replication', 'replicação', 'replica',
|
|
71
|
+
'schema evolution', 'evolução de schema', 'cdc', 'hot tenant', 'tenant quente'],
|
|
72
|
+
entrypoint: '/dados-distribuidos',
|
|
73
|
+
agents: ['auditor-consistencia-isolamento', 'detector-tenant-quente',
|
|
74
|
+
'validador-evolucao-schema'],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: 'Workflow de fases / milestone',
|
|
78
|
+
keywords: ['planejar fase', 'executar fase', 'milestone', 'marco', 'roadmap',
|
|
79
|
+
'nova fase', 'plano de fase'],
|
|
80
|
+
entrypoint: '/planejar-fase, /executar-fase',
|
|
81
|
+
agents: ['planner', 'executor', 'verifier'],
|
|
82
|
+
},
|
|
83
|
+
];
|
|
84
|
+
|
|
85
|
+
function buildDirective(matched) {
|
|
86
|
+
const lines = [
|
|
87
|
+
'🧭 kit-mcp router — o prompt casa ' +
|
|
88
|
+
(matched.length === 1 ? 'o domínio canônico' : 'domínios canônicos') + ':',
|
|
89
|
+
];
|
|
90
|
+
for (const d of matched) {
|
|
91
|
+
lines.push(
|
|
92
|
+
`• ${d.name} → entrypoint ${d.entrypoint} · agents: ${d.agents.join(', ')}`,
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
lines.push(
|
|
96
|
+
'REGRA: para trabalho multi-passo destes domínios, DELEGUE via',
|
|
97
|
+
'Task(subagent_type="<agent>") em vez de implementar inline. Não improvise',
|
|
98
|
+
'o que um agent canônico já cobre — o valor do kit ESTÁ nos agents.',
|
|
99
|
+
'Exceção: ação trivial de 1 passo (rename, fix de 1 linha, ajuste de texto)',
|
|
100
|
+
'→ resolva inline. Disable: env KIT_MCP_NO_ROUTER=1.',
|
|
101
|
+
);
|
|
102
|
+
return lines.join('\n');
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
let input = '';
|
|
106
|
+
const stdinTimeout = setTimeout(() => process.exit(0), 3000);
|
|
107
|
+
process.stdin.setEncoding('utf8');
|
|
108
|
+
process.stdin.on('data', (chunk) => { input += chunk; });
|
|
109
|
+
process.stdin.on('end', () => {
|
|
110
|
+
clearTimeout(stdinTimeout);
|
|
111
|
+
let envelope;
|
|
112
|
+
try {
|
|
113
|
+
envelope = JSON.parse(input || '{}');
|
|
114
|
+
} catch {
|
|
115
|
+
process.exit(0); // envelope inválido — não bloquear
|
|
116
|
+
}
|
|
117
|
+
// O campo do prompt varia entre versões — aceitar os nomes plausíveis.
|
|
118
|
+
const prompt = String(
|
|
119
|
+
envelope.prompt || envelope.user_prompt || envelope.text || '',
|
|
120
|
+
).toLowerCase();
|
|
121
|
+
if (!prompt) process.exit(0);
|
|
122
|
+
|
|
123
|
+
const matched = DOMAINS.filter((d) => d.keywords.some((k) => prompt.includes(k)));
|
|
124
|
+
if (matched.length === 0) process.exit(0); // sem domínio — prompt limpo
|
|
125
|
+
|
|
126
|
+
const payload = JSON.stringify({
|
|
127
|
+
continue: true,
|
|
128
|
+
hookSpecificOutput: {
|
|
129
|
+
hookEventName: 'UserPromptSubmit',
|
|
130
|
+
additionalContext: buildDirective(matched),
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
// flush antes de exit
|
|
134
|
+
process.stdout.write(payload, () => process.exit(0));
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
process.stdin.on('error', () => process.exit(0));
|