@luanpdd/kit-mcp 1.29.0 → 1.30.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 +82 -82
- package/kit/COMANDOS.md +138 -138
- package/kit/README.md +76 -76
- package/kit/agents/advisor-researcher.md +106 -106
- package/kit/agents/assumptions-analyzer.md +107 -107
- package/kit/agents/audit-log-implementer.md +313 -313
- package/kit/agents/auditor-consistencia-isolamento.md +413 -413
- package/kit/agents/b2b-saas-architect.md +156 -156
- package/kit/agents/cascading-failures-auditor.md +298 -298
- package/kit/agents/codebase-mapper.md +768 -768
- package/kit/agents/crm-pipeline-implementer.md +256 -256
- package/kit/agents/debugger.md +813 -813
- package/kit/agents/detector-tenant-quente.md +337 -337
- package/kit/agents/evolution-go-integrator.md +200 -200
- package/kit/agents/example-reviewer.md +21 -21
- package/kit/agents/executor.md +564 -564
- package/kit/agents/integration-checker.md +200 -200
- package/kit/agents/invite-flow-implementer.md +189 -189
- package/kit/agents/legacy-characterizer.md +368 -368
- package/kit/agents/lgpd-compliance-auditor.md +295 -295
- package/kit/agents/multi-tenant-isolation-auditor.md +253 -253
- package/kit/agents/multi-tenant-rls-writer.md +340 -340
- package/kit/agents/nyquist-auditor.md +178 -178
- package/kit/agents/observability-coverage-auditor.md +315 -315
- package/kit/agents/org-onboarding-implementer.md +223 -223
- package/kit/agents/payload-capture-instrumenter.md +273 -273
- package/kit/agents/phase-researcher.md +696 -696
- package/kit/agents/plan-checker.md +272 -272
- package/kit/agents/planner.md +922 -922
- package/kit/agents/project-researcher.md +652 -652
- package/kit/agents/refactor-safety-auditor.md +404 -404
- package/kit/agents/research-synthesizer.md +245 -245
- package/kit/agents/roadmapper.md +677 -677
- package/kit/agents/seam-finder.md +359 -359
- package/kit/agents/shotgun-surgery-detector.md +349 -349
- package/kit/agents/supabase-branching-architect.md +562 -562
- package/kit/agents/supabase-cicd-pipeline-implementer.md +777 -777
- package/kit/agents/supabase-column-privileges-writer.md +399 -399
- package/kit/agents/supabase-edge-fn-tester.md +287 -0
- package/kit/agents/supabase-edge-fn-writer.md +239 -210
- package/kit/agents/supabase-migration-writer.md +385 -385
- package/kit/agents/supabase-rbac-implementer.md +392 -392
- package/kit/agents/supabase-realtime-implementer.md +363 -267
- package/kit/agents/supabase-rls-hardener.md +521 -521
- package/kit/agents/supabase-rls-writer.md +323 -323
- package/kit/agents/supabase-roles-implementer.md +355 -355
- package/kit/agents/super-admin-implementer.md +281 -281
- package/kit/agents/ui-auditor.md +437 -437
- package/kit/agents/ui-checker.md +302 -302
- package/kit/agents/ui-researcher.md +355 -355
- package/kit/agents/user-profiler.md +175 -175
- package/kit/agents/validador-evolucao-schema.md +335 -335
- package/kit/agents/verifier.md +728 -728
- 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.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/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 +30 -7
- 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 +14 -8
- 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/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/_shared-supabase/glossary.md +17 -0
- 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/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-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 +229 -141
- package/kit/skills/supabase-edge-functions-auth/SKILL.md +309 -0
- package/kit/skills/supabase-edge-functions-limits/SKILL.md +302 -0
- package/kit/skills/supabase-edge-functions-mcp-server/SKILL.md +279 -0
- package/kit/skills/supabase-edge-functions-testing/SKILL.md +277 -0
- package/kit/skills/supabase-edge-runtime-builtins/SKILL.md +357 -0
- package/kit/skills/supabase-migration-repair/SKILL.md +823 -823
- package/kit/skills/supabase-migrations/SKILL.md +297 -297
- 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 -236
- 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/super-admin-platform-pattern/SKILL.md +326 -326
- package/kit/skills/tenant-quente-mitigacao/SKILL.md +605 -605
- package/kit/skills/whatsapp-conversation-state-machine/SKILL.md +287 -287
- package/package.json +1 -1
- package/src/core/kit.js +216 -216
- package/src/core/reflect.js +247 -247
- package/src/core/reverse-sync.js +372 -372
- package/src/core/sync.js +418 -418
- package/src/core/watch.js +121 -121
- package/src/mcp-server/index.js +693 -693
|
@@ -1,101 +1,101 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// hook-version: 1.30.1
|
|
3
|
-
// SEC-13-05: flush-before-exit category = A (stdout.write + immediate exit)
|
|
4
|
-
// Fix applied: process.stdout.write(payload, () => process.exit(0)) on warning path.
|
|
5
|
-
// framework Workflow Guard — PreToolUse hook
|
|
6
|
-
// Detects when Claude attempts file edits outside a framework workflow context
|
|
7
|
-
// (no active / command or Task subagent) and injects an advisory warning.
|
|
8
|
-
//
|
|
9
|
-
// This is a SOFT guard — it advises, not blocks. The edit still proceeds.
|
|
10
|
-
// The warning nudges Claude to use /quick or /fast instead of
|
|
11
|
-
// making direct edits that bypass state tracking.
|
|
12
|
-
//
|
|
13
|
-
// Enable via config: hooks.workflow_guard: true (default: false)
|
|
14
|
-
// Only triggers on Write/Edit tool calls to non-.planning/ files.
|
|
15
|
-
|
|
16
|
-
const fs = require('fs');
|
|
17
|
-
const path = require('path');
|
|
18
|
-
|
|
19
|
-
let input = '';
|
|
20
|
-
const stdinTimeout = setTimeout(() => process.exit(0), 3000);
|
|
21
|
-
process.stdin.setEncoding('utf8');
|
|
22
|
-
process.stdin.on('data', chunk => input += chunk);
|
|
23
|
-
process.stdin.on('end', () => {
|
|
24
|
-
clearTimeout(stdinTimeout);
|
|
25
|
-
try {
|
|
26
|
-
const data = JSON.parse(input);
|
|
27
|
-
const toolName = data.tool_name;
|
|
28
|
-
|
|
29
|
-
// Only guard Write and Edit tool calls
|
|
30
|
-
if (toolName !== 'Write' && toolName !== 'Edit') {
|
|
31
|
-
process.exit(0);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Check if we're inside a framework workflow (Task subagent or / command)
|
|
35
|
-
// Subagents have a session_id that differs from the parent
|
|
36
|
-
// and typically have a description field set by the orchestrator
|
|
37
|
-
if (data.tool_input?.is_subagent || data.session_type === 'task') {
|
|
38
|
-
process.exit(0);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// Check the file being edited
|
|
42
|
-
const filePath = data.tool_input?.file_path || data.tool_input?.path || '';
|
|
43
|
-
|
|
44
|
-
// Allow edits to .planning/ files (framework state management)
|
|
45
|
-
if (filePath.includes('.planning/') || filePath.includes('.planning\\')) {
|
|
46
|
-
process.exit(0);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Allow edits to common config/docs files that don't need framework tracking
|
|
50
|
-
const allowedPatterns = [
|
|
51
|
-
/\.gitignore$/,
|
|
52
|
-
/\.env/,
|
|
53
|
-
/CLAUDE\.md$/,
|
|
54
|
-
/AGENTS\.md$/,
|
|
55
|
-
/GEMINI\.md$/,
|
|
56
|
-
/settings\.json$/,
|
|
57
|
-
];
|
|
58
|
-
if (allowedPatterns.some(p => p.test(filePath))) {
|
|
59
|
-
process.exit(0);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// Check if workflow guard is enabled
|
|
63
|
-
const cwd = data.cwd || process.cwd();
|
|
64
|
-
const configPath = path.join(cwd, '.planning', 'config.json');
|
|
65
|
-
if (fs.existsSync(configPath)) {
|
|
66
|
-
try {
|
|
67
|
-
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
68
|
-
if (!config.hooks?.workflow_guard) {
|
|
69
|
-
process.exit(0); // Guard disabled (default)
|
|
70
|
-
}
|
|
71
|
-
} catch (e) {
|
|
72
|
-
process.exit(0);
|
|
73
|
-
}
|
|
74
|
-
} else {
|
|
75
|
-
process.exit(0); // No framework project — don't guard
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// If we get here: framework project, guard enabled, file edit outside .planning/,
|
|
79
|
-
// not in a subagent context. Inject advisory warning.
|
|
80
|
-
const output = {
|
|
81
|
-
hookSpecificOutput: {
|
|
82
|
-
hookEventName: "PreToolUse",
|
|
83
|
-
additionalContext: `⚠️ AVISO DE FLUXO DE TRABALHO: Você está editando ${path.basename(filePath)} diretamente sem um comando do framework. ` +
|
|
84
|
-
'Esta edição não será rastreada no STATE.md nem produzirá um SUMMARY.md. ' +
|
|
85
|
-
'Considere usar /fast para correções triviais ou /quick para mudanças maiores ' +
|
|
86
|
-
'para manter o rastreamento de estado do projeto. ' +
|
|
87
|
-
'Se isso for intencional (ex.: usuário solicitou explicitamente uma edição direta), prossiga normalmente.'
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
// SEC-13-05: aguardar flush do stdout antes do exit. Sem callback, em
|
|
92
|
-
// pipes lentos (CI/Windows/Git Bash) o JSON pode ser dropado quando o
|
|
93
|
-
// process termina antes do kernel drenar o buffer.
|
|
94
|
-
process.stdout.write(JSON.stringify(output), () => {
|
|
95
|
-
process.exit(0);
|
|
96
|
-
});
|
|
97
|
-
} catch (e) {
|
|
98
|
-
// Silent fail — never block tool execution
|
|
99
|
-
process.exit(0);
|
|
100
|
-
}
|
|
101
|
-
});
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// hook-version: 1.30.1
|
|
3
|
+
// SEC-13-05: flush-before-exit category = A (stdout.write + immediate exit)
|
|
4
|
+
// Fix applied: process.stdout.write(payload, () => process.exit(0)) on warning path.
|
|
5
|
+
// framework Workflow Guard — PreToolUse hook
|
|
6
|
+
// Detects when Claude attempts file edits outside a framework workflow context
|
|
7
|
+
// (no active / command or Task subagent) and injects an advisory warning.
|
|
8
|
+
//
|
|
9
|
+
// This is a SOFT guard — it advises, not blocks. The edit still proceeds.
|
|
10
|
+
// The warning nudges Claude to use /quick or /fast instead of
|
|
11
|
+
// making direct edits that bypass state tracking.
|
|
12
|
+
//
|
|
13
|
+
// Enable via config: hooks.workflow_guard: true (default: false)
|
|
14
|
+
// Only triggers on Write/Edit tool calls to non-.planning/ files.
|
|
15
|
+
|
|
16
|
+
const fs = require('fs');
|
|
17
|
+
const path = require('path');
|
|
18
|
+
|
|
19
|
+
let input = '';
|
|
20
|
+
const stdinTimeout = setTimeout(() => process.exit(0), 3000);
|
|
21
|
+
process.stdin.setEncoding('utf8');
|
|
22
|
+
process.stdin.on('data', chunk => input += chunk);
|
|
23
|
+
process.stdin.on('end', () => {
|
|
24
|
+
clearTimeout(stdinTimeout);
|
|
25
|
+
try {
|
|
26
|
+
const data = JSON.parse(input);
|
|
27
|
+
const toolName = data.tool_name;
|
|
28
|
+
|
|
29
|
+
// Only guard Write and Edit tool calls
|
|
30
|
+
if (toolName !== 'Write' && toolName !== 'Edit') {
|
|
31
|
+
process.exit(0);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Check if we're inside a framework workflow (Task subagent or / command)
|
|
35
|
+
// Subagents have a session_id that differs from the parent
|
|
36
|
+
// and typically have a description field set by the orchestrator
|
|
37
|
+
if (data.tool_input?.is_subagent || data.session_type === 'task') {
|
|
38
|
+
process.exit(0);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Check the file being edited
|
|
42
|
+
const filePath = data.tool_input?.file_path || data.tool_input?.path || '';
|
|
43
|
+
|
|
44
|
+
// Allow edits to .planning/ files (framework state management)
|
|
45
|
+
if (filePath.includes('.planning/') || filePath.includes('.planning\\')) {
|
|
46
|
+
process.exit(0);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Allow edits to common config/docs files that don't need framework tracking
|
|
50
|
+
const allowedPatterns = [
|
|
51
|
+
/\.gitignore$/,
|
|
52
|
+
/\.env/,
|
|
53
|
+
/CLAUDE\.md$/,
|
|
54
|
+
/AGENTS\.md$/,
|
|
55
|
+
/GEMINI\.md$/,
|
|
56
|
+
/settings\.json$/,
|
|
57
|
+
];
|
|
58
|
+
if (allowedPatterns.some(p => p.test(filePath))) {
|
|
59
|
+
process.exit(0);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Check if workflow guard is enabled
|
|
63
|
+
const cwd = data.cwd || process.cwd();
|
|
64
|
+
const configPath = path.join(cwd, '.planning', 'config.json');
|
|
65
|
+
if (fs.existsSync(configPath)) {
|
|
66
|
+
try {
|
|
67
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
68
|
+
if (!config.hooks?.workflow_guard) {
|
|
69
|
+
process.exit(0); // Guard disabled (default)
|
|
70
|
+
}
|
|
71
|
+
} catch (e) {
|
|
72
|
+
process.exit(0);
|
|
73
|
+
}
|
|
74
|
+
} else {
|
|
75
|
+
process.exit(0); // No framework project — don't guard
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// If we get here: framework project, guard enabled, file edit outside .planning/,
|
|
79
|
+
// not in a subagent context. Inject advisory warning.
|
|
80
|
+
const output = {
|
|
81
|
+
hookSpecificOutput: {
|
|
82
|
+
hookEventName: "PreToolUse",
|
|
83
|
+
additionalContext: `⚠️ AVISO DE FLUXO DE TRABALHO: Você está editando ${path.basename(filePath)} diretamente sem um comando do framework. ` +
|
|
84
|
+
'Esta edição não será rastreada no STATE.md nem produzirá um SUMMARY.md. ' +
|
|
85
|
+
'Considere usar /fast para correções triviais ou /quick para mudanças maiores ' +
|
|
86
|
+
'para manter o rastreamento de estado do projeto. ' +
|
|
87
|
+
'Se isso for intencional (ex.: usuário solicitou explicitamente uma edição direta), prossiga normalmente.'
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
// SEC-13-05: aguardar flush do stdout antes do exit. Sem callback, em
|
|
92
|
+
// pipes lentos (CI/Windows/Git Bash) o JSON pode ser dropado quando o
|
|
93
|
+
// process termina antes do kernel drenar o buffer.
|
|
94
|
+
process.stdout.write(JSON.stringify(output), () => {
|
|
95
|
+
process.exit(0);
|
|
96
|
+
});
|
|
97
|
+
} catch (e) {
|
|
98
|
+
// Silent fail — never block tool execution
|
|
99
|
+
process.exit(0);
|
|
100
|
+
}
|
|
101
|
+
});
|
package/kit/settings.json
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
{
|
|
2
|
-
"permissions": {
|
|
3
|
-
"allow": []
|
|
4
|
-
},
|
|
5
|
-
"hooks": {
|
|
6
|
-
"SessionStart": [
|
|
7
|
-
{
|
|
8
|
-
"hooks": [
|
|
9
|
-
{
|
|
10
|
-
"type": "command",
|
|
11
|
-
"command": "node .claude/hooks/check-update.js"
|
|
12
|
-
}
|
|
13
|
-
]
|
|
14
|
-
}
|
|
15
|
-
],
|
|
16
|
-
"PostToolUse": [
|
|
17
|
-
{
|
|
18
|
-
"matcher": "Bash|Edit|Write|MultiEdit|Agent|Task",
|
|
19
|
-
"hooks": [
|
|
20
|
-
{
|
|
21
|
-
"type": "command",
|
|
22
|
-
"command": "node .claude/hooks/context-monitor.js",
|
|
23
|
-
"timeout": 10
|
|
24
|
-
}
|
|
25
|
-
]
|
|
26
|
-
}
|
|
27
|
-
],
|
|
28
|
-
"PreToolUse": [
|
|
29
|
-
{
|
|
30
|
-
"matcher": "Write|Edit",
|
|
31
|
-
"hooks": [
|
|
32
|
-
{
|
|
33
|
-
"type": "command",
|
|
34
|
-
"command": "node .claude/hooks/prompt-guard.js",
|
|
35
|
-
"timeout": 5
|
|
36
|
-
}
|
|
37
|
-
]
|
|
38
|
-
}
|
|
39
|
-
]
|
|
40
|
-
},
|
|
41
|
-
"statusLine": {
|
|
42
|
-
"type": "command",
|
|
43
|
-
"command": "node .claude/hooks/statusline.js"
|
|
44
|
-
}
|
|
45
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": []
|
|
4
|
+
},
|
|
5
|
+
"hooks": {
|
|
6
|
+
"SessionStart": [
|
|
7
|
+
{
|
|
8
|
+
"hooks": [
|
|
9
|
+
{
|
|
10
|
+
"type": "command",
|
|
11
|
+
"command": "node .claude/hooks/check-update.js"
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"PostToolUse": [
|
|
17
|
+
{
|
|
18
|
+
"matcher": "Bash|Edit|Write|MultiEdit|Agent|Task",
|
|
19
|
+
"hooks": [
|
|
20
|
+
{
|
|
21
|
+
"type": "command",
|
|
22
|
+
"command": "node .claude/hooks/context-monitor.js",
|
|
23
|
+
"timeout": 10
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"PreToolUse": [
|
|
29
|
+
{
|
|
30
|
+
"matcher": "Write|Edit",
|
|
31
|
+
"hooks": [
|
|
32
|
+
{
|
|
33
|
+
"type": "command",
|
|
34
|
+
"command": "node .claude/hooks/prompt-guard.js",
|
|
35
|
+
"timeout": 5
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"statusLine": {
|
|
42
|
+
"type": "command",
|
|
43
|
+
"command": "node .claude/hooks/statusline.js"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -127,6 +127,23 @@
|
|
|
127
127
|
| **Preview branch** (v1.27) | Branch Supabase ephemeral, auto-pause em inatividade, auto-delete em PR merge/close. Padrão para feature development. |
|
|
128
128
|
| **[remotes] block** (v1.27) | Seção em `config.toml` que define configuração branch-specific. Referencia `project_id` obtido via `supabase --experimental branches list`. Permite override de db/api/auth/edge_runtime per branch. |
|
|
129
129
|
| **Schema drift** (v1.27) | Divergência entre estado real do schema e migration tracking. Causa típica: changes diretos no dashboard, ou timestamps wrong order após git rebase. Resolução via `migration repair` (tracking) ou rebase rename (timestamps). |
|
|
130
|
+
| **`SUPABASE_PUBLISHABLE_KEYS` / `SUPABASE_SECRET_KEYS`** (v1.30) | Env vars 2026 — **JSON dicts** (não strings) com chaves nomeadas. Acesso canônico: `JSON.parse(Deno.env.get('SUPABASE_SECRET_KEYS')!)['default']`. Cada projeto pode ter múltiplas chaves nomeadas (`default`, `automations`, `internal-cron`) para rotação granular + audit per-consumer. Legacy `SUPABASE_ANON_KEY` e `SUPABASE_SERVICE_ROLE_KEY` ainda funcionam mas devem ser evitados em código novo. |
|
|
131
|
+
| **`@supabase/server`** (v1.30) | Package npm 2026 que reduz boilerplate de auth em Edge Functions. Exporta `withSupabase({auth, ...})` (wrapper canônico) e `createSupabaseContext` (low-level para erros customizados). Pré-configura `ctx.supabase` (RLS-aware) ou `ctx.supabaseAdmin` (bypass) conforme auth mode. |
|
|
132
|
+
| **`withSupabase` auth modes** (v1.30) | 4 modos: `'user'` (JWT em Authorization), `'secret:<name>'` (sb_secret em apikey, ctx.supabaseAdmin), `'publishable:<name>'` (sb_publishable em apikey, ctx.supabase anon), `'none'` (sem check — handler responsável). Combinável via array `['user', 'secret:cron']` — `ctx.authMode` indica qual matchou. |
|
|
133
|
+
| **`verify_jwt` toggle** (v1.30) | Flag em `[functions.<name>]` no `config.toml` — `true` (default, plataforma valida JWT antes do handler) ou `false` (webhooks externos / service-to-service auth via apikey). CLI `--no-verify-jwt` para deploy/serve único. |
|
|
134
|
+
| **`Authorization` vs `apikey`** (v1.30) | Headers distintos. `Authorization: Bearer <user-jwt>` é JWT do Supabase Auth. `apikey: sb_publishable_... \| sb_secret_...` é API key 2026 do projeto. Mandar API key como Bearer = 401 (causa #1 de erros auth). Browser logado envia ambos. |
|
|
135
|
+
| **per-function `deno.json`** (v1.30) | Pattern recomendado 2026 — cada função tem seu próprio `deno.json` com `imports`, substituindo `import_map.json` global. Isola deps; update em uma função não quebra outra. Aliases tipo `"supabase": "npm:@supabase/supabase-js@2.95.0"` permitem imports limpos. |
|
|
136
|
+
| **per-function `config.toml`** (v1.30) | Seção `[functions.<name>]` configura comportamento por função: `verify_jwt`, `import_map` (legacy), `entrypoint` (JS puro CLI 1.215+), `static_files` (Wasm/assets CLI 2.7.0+). Sobrescreve defaults. |
|
|
137
|
+
| **`Supabase.ai.Session`** (v1.30) | Built-in runtime para AI inference. `gte-small` (zero deps, 384-dim embeddings, English, max 512 tokens). LLM via `AI_INFERENCE_API_HOST` apontando para Ollama (`mode: 'ollama'`) ou Llamafile (`mode: 'openaicompatible'`). Streaming via async iterator. |
|
|
138
|
+
| **S3FS persistent storage** (v1.30) | Mount S3-compatible bucket como filesystem em `/s3/<bucket-name>/`. Habilitado por 4 secrets: `S3FS_ENDPOINT_URL`, `S3FS_REGION`, `S3FS_ACCESS_KEY_ID`, `S3FS_SECRET_ACCESS_KEY`. Permite `Deno.writeFile`, `Deno.readFile`, `Deno.mkdir` em paths persistentes (vs `/tmp` ephemeral). |
|
|
139
|
+
| **`x-region` / `FunctionRegion`** (v1.30) | Regional invocation. Header `x-region: us-east-1` ou query `?forceFunctionRegion=us-east-1` força execução em região específica (útil quando DB-heavy + DB regional). 14 regiões disponíveis. **Caveat:** desliga failover automático. Header response `x-sb-edge-region` confirma região executada. Env `SB_REGION` lê região atual. |
|
|
140
|
+
| **`Deno.upgradeWebSocket`** (v1.30) | API canônica para WebSocket server em Edge Function. Browser não permite custom headers — JWT via query param `?jwt=...` ou subprotocol `Sec-WebSocket-Protocol: jwt-<token>`. Validar com `supabase.auth.getUser(jwt)`. Local: `[edge_runtime] policy = "per_worker"` obrigatório (desliga hot-reload). |
|
|
141
|
+
| **`static_files` Wasm** (v1.30) | Config em `config.toml` para bundle Wasm + assets junto com a função (CLI 2.7.0+). Format `static_files = ["./functions/wasm-add/add-wasm/pkg/*"]`. Caveat: **não funciona com `--use-api`** — requer Docker no deploy. |
|
|
142
|
+
| **`RateLimitError` / `retryAfterMs`** (v1.30) | Erro Deno lançado quando Edge Function chama outra Edge Function e excede ~5000 req/min do chain. `err.retryAfterMs` indica delay sugerido. Resposta canônica: 429 + header `Retry-After`. Retry pattern: `setTimeout(_, err.retryAfterMs)`. Não conta inbound nem APIs externas — só function-to-function. |
|
|
143
|
+
| **`FunctionsHttpError` / `FunctionsRelayError` / `FunctionsFetchError`** (v1.30) | 3 error classes do `@supabase/supabase-js` para classificar falha de `supabase.functions.invoke`. HttpError = função executou e retornou 4xx/5xx; RelayError = gateway↔Supabase; FetchError = inalcançável. `error.context.json()` lê body do HttpError. |
|
|
144
|
+
| **status code 546** (v1.30) | Custom code Supabase = `WORKER_LIMIT` (recurso esgotado — memory 256MB, CPU 2s, ou wall clock 150s/400s excedido). Logs mostram qual limite estourou. Fix: reduzir bundle, chunk processing, mover para `EdgeRuntime.waitUntil` ou pgmq. |
|
|
145
|
+
| **`mcp-lite`** (v1.30) | Framework TypeScript zero-deps para MCP servers. Pattern canônico em Edge Function: dois Hono apps — outer `app.route('/<function-name>', mcpApp)` (Supabase prefixa URL com nome) + inner `mcpApp.all('/mcp', handler)` (transport binding). Scaffold via `npm create mcp-lite@latest` template "Supabase Edge Functions". |
|
|
146
|
+
| **`corsHeaders` from SDK** (v1.30) | A partir de `@supabase/supabase-js@2.95.0`, import `corsHeaders` direto do SDK: `import { corsHeaders } from 'npm:@supabase/supabase-js@2.95.0/cors'`. Auto-sync com novos headers em releases futuras (evita drift de strings hard-coded). |
|
|
130
147
|
|
|
131
148
|
---
|
|
132
149
|
|