@luanpdd/kit-mcp 1.27.0 → 1.29.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 -914
- package/gates/agent-no-recursive-dispatch.md +45 -11
- 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 +1 -1
- package/kit/agents/auditor-consistencia-isolamento.md +1 -1
- package/kit/agents/b2b-saas-architect.md +1 -1
- package/kit/agents/cascading-failures-auditor.md +1 -1
- package/kit/agents/codebase-mapper.md +768 -768
- package/kit/agents/crm-pipeline-implementer.md +1 -1
- package/kit/agents/debugger.md +813 -813
- package/kit/agents/detector-tenant-quente.md +1 -1
- package/kit/agents/evolution-go-integrator.md +1 -1
- 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 +1 -1
- package/kit/agents/legacy-characterizer.md +1 -1
- package/kit/agents/lgpd-compliance-auditor.md +1 -1
- package/kit/agents/multi-tenant-isolation-auditor.md +1 -1
- package/kit/agents/multi-tenant-rls-writer.md +1 -1
- package/kit/agents/nyquist-auditor.md +178 -178
- package/kit/agents/observability-coverage-auditor.md +1 -1
- package/kit/agents/org-onboarding-implementer.md +1 -1
- package/kit/agents/payload-capture-instrumenter.md +1 -1
- 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 +1 -1
- package/kit/agents/research-synthesizer.md +245 -245
- package/kit/agents/roadmapper.md +677 -677
- package/kit/agents/seam-finder.md +1 -1
- package/kit/agents/shotgun-surgery-detector.md +1 -1
- package/kit/agents/supabase-branching-architect.md +1 -1
- package/kit/agents/supabase-cicd-pipeline-implementer.md +1 -1
- package/kit/agents/supabase-column-privileges-writer.md +1 -1
- package/kit/agents/supabase-migration-writer.md +1 -1
- package/kit/agents/supabase-rbac-implementer.md +1 -1
- package/kit/agents/supabase-rls-hardener.md +1 -1
- package/kit/agents/supabase-rls-writer.md +1 -1
- package/kit/agents/supabase-roles-implementer.md +1 -1
- package/kit/agents/super-admin-implementer.md +1 -1
- 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 +1 -1
- 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 +1 -1
- package/kit/commands/auditar-marco.md +179 -179
- package/kit/commands/auditar-observabilidade-cobertura.md +1 -1
- package/kit/commands/auditar-refactor.md +1 -1
- package/kit/commands/auditar-release.md +1 -1
- 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 +1 -1
- package/kit/commands/capturar-payloads.md +1 -1
- package/kit/commands/caracterizar.md +1 -1
- package/kit/commands/concluir-marco.md +247 -247
- package/kit/commands/configuracoes.md +36 -36
- package/kit/commands/dados-distribuidos.md +1 -1
- package/kit/commands/definir-perfil.md +10 -10
- package/kit/commands/depurar.md +190 -190
- package/kit/commands/detectar-duplicacao.md +1 -1
- package/kit/commands/discutir-fase.md +131 -131
- package/kit/commands/encontrar-seams.md +1 -1
- 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 +1 -1
- 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 +1 -1
- package/kit/commands/mapear-codebase.md +70 -70
- package/kit/commands/multi-tenant.md +1 -1
- 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 +1 -1
- 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 +1 -1
- package/kit/commands/supabase.md +1 -1
- 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 +90 -90
- 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/ai-prompt-characterization/SKILL.md +1 -1
- package/kit/skills/armadilhas-sistemas-distribuidos/SKILL.md +1 -1
- package/kit/skills/audit-log-multi-tenant/SKILL.md +1 -1
- package/kit/skills/b2b-saas-architecture/SKILL.md +1 -1
- package/kit/skills/consistencia-leitura-replica/SKILL.md +1 -1
- package/kit/skills/crm-lead-pipeline-patterns/SKILL.md +1 -1
- package/kit/skills/escolha-modelo-consistencia/SKILL.md +1 -1
- package/kit/skills/evolucao-schema-compativel/SKILL.md +1 -1
- package/kit/skills/evolution-go-whatsapp-integration/SKILL.md +1 -1
- package/kit/skills/example-skill/SKILL.md +42 -42
- package/kit/skills/legacy-api-only-applications/SKILL.md +1 -1
- package/kit/skills/legacy-characterization-tests/SKILL.md +1 -1
- package/kit/skills/legacy-effect-analysis/SKILL.md +1 -1
- package/kit/skills/legacy-extract-class/SKILL.md +1 -1
- package/kit/skills/legacy-programming-by-difference/SKILL.md +1 -1
- package/kit/skills/legacy-seams-and-test-harness/SKILL.md +1 -1
- package/kit/skills/legacy-shotgun-surgery/SKILL.md +1 -1
- package/kit/skills/legacy-sprout-wrap-techniques/SKILL.md +1 -1
- package/kit/skills/legacy-storytelling-naked-crc/SKILL.md +1 -1
- package/kit/skills/lgpd-multi-tenant-compliance/SKILL.md +1 -1
- package/kit/skills/member-invite-flow/SKILL.md +1 -1
- package/kit/skills/member-management-react-shadcn/SKILL.md +1 -1
- package/kit/skills/multi-tenant-performance-scaling/SKILL.md +1 -1
- package/kit/skills/multi-tenant-rls-hierarchy/SKILL.md +1 -1
- package/kit/skills/org-onboarding-flow/SKILL.md +1 -1
- package/kit/skills/org-switcher-react-pattern/SKILL.md +1 -1
- package/kit/skills/permission-gate-react-pattern/SKILL.md +1 -1
- package/kit/skills/postgres-isolamento-concorrencia/SKILL.md +1 -1
- package/kit/skills/pre-refactor-characterization/SKILL.md +1 -1
- package/kit/skills/rbac-permissions-matrix-supabase/SKILL.md +1 -1
- package/kit/skills/streams-eventos-cdc/SKILL.md +1 -1
- package/kit/skills/supabase-branching-workflow/SKILL.md +1 -1
- package/kit/skills/supabase-ci-cd-github-actions/SKILL.md +1 -1
- package/kit/skills/supabase-column-level-security/SKILL.md +1 -1
- package/kit/skills/supabase-config-toml-remotes/SKILL.md +1 -1
- package/kit/skills/supabase-custom-claims-rbac/SKILL.md +1 -1
- package/kit/skills/supabase-migration-repair/SKILL.md +1 -1
- package/kit/skills/supabase-migrations/SKILL.md +1 -1
- package/kit/skills/supabase-pgtap-testing/SKILL.md +1 -1
- package/kit/skills/supabase-postgres-roles/SKILL.md +1 -1
- package/kit/skills/supabase-rls-defense-in-depth/SKILL.md +1 -1
- package/kit/skills/supabase-rls-policies/SKILL.md +1 -1
- package/kit/skills/super-admin-platform-pattern/SKILL.md +1 -1
- package/kit/skills/tenant-quente-mitigacao/SKILL.md +1 -1
- package/kit/skills/whatsapp-conversation-state-machine/SKILL.md +1 -1
- package/package.json +63 -63
- package/src/cli/index.js +378 -6
- package/src/cli/render.js +7 -0
- package/src/core/kit.js +216 -216
- package/src/core/logger.js +170 -0
- package/src/core/notify.js +60 -0
- 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 +276 -10
- package/src/mcp-server/roots.js +124 -0
|
@@ -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
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ai-prompt-characterization
|
|
3
|
-
description: Use ao modificar prompt/tool LLM em produção — characterization de generations com temperature=0 + seed fixo + sanitização específica. Modernização 2026 sem precedente em 2004
|
|
3
|
+
description: Use ao modificar prompt/tool LLM em produção — characterization de generations com temperature=0 + seed fixo + sanitização específica. Modernização 2026 sem precedente em 2004…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# AI Prompt Characterization (Modernização)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: armadilhas-sistemas-distribuidos
|
|
3
|
-
description: Use ao desenhar lógica que depende de relógio (expiração, TTL, ordenação por timestamp) ou distributed lock em Supabase
|
|
3
|
+
description: Use ao desenhar lógica que depende de relógio (expiração, TTL, ordenação por timestamp) ou distributed lock em Supabase…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Armadilhas de Sistemas Distribuídos — Clock Skew, Fencing Tokens, GC Pause, Falhas Parciais, Modelos de Sistema
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: audit-log-multi-tenant
|
|
3
|
-
description: Use ao implementar audit log em B2B SaaS multi-tenant Supabase
|
|
3
|
+
description: Use ao implementar audit log em B2B SaaS multi-tenant Supabase…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Audit Log Multi-Tenant — Compliance + Forensics
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: b2b-saas-architecture
|
|
3
|
-
description: Use ao desenhar app B2B multi-tenant (org→department→leader→collaborator) com Supabase + React
|
|
3
|
+
description: Use ao desenhar app B2B multi-tenant (org→department→leader→collaborator) com Supabase + React…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# B2B SaaS Multi-Tenant — Arquitetura Canônica
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: consistencia-leitura-replica
|
|
3
|
-
description: Use ao usar Supabase read replicas via Supavisor (porta 6543) ou ao combinar Realtime broadcast + leitura DB
|
|
3
|
+
description: Use ao usar Supabase read replicas via Supavisor (porta 6543) ou ao combinar Realtime broadcast + leitura DB…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Consistência Leitura Réplica — Supabase + Supavisor + Realtime
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: crm-lead-pipeline-patterns
|
|
3
|
-
description: Use ao implementar CRM lead pipeline em B2B SaaS Supabase — 6 stages canônicos lead→qualified→proposal→negotiation→won|lost, trigger PG BEFORE UPDATE valida transições (CHECK
|
|
3
|
+
description: Use ao implementar CRM lead pipeline em B2B SaaS Supabase — 6 stages canônicos lead→qualified→proposal→negotiation→won|lost, trigger PG BEFORE UPDATE valida transições (CHECK cons…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# CRM Lead Pipeline — Patterns Canônicos
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: escolha-modelo-consistencia
|
|
3
|
-
description: Use ao desenhar feature distribuída em Supabase decidindo o modelo de consistência
|
|
3
|
+
description: Use ao desenhar feature distribuída em Supabase decidindo o modelo de consistência…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Escolha de Modelo de Consistência — Decision Tree + Patterns Postgres
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: evolucao-schema-compativel
|
|
3
|
-
description: Use ao escrever migration Postgres ou versionar contrato API Edge Function
|
|
3
|
+
description: Use ao escrever migration Postgres ou versionar contrato API Edge Function…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Evolução de Schema Compatível — Padrão 3-Passos + Rolling Upgrade
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: evolution-go-whatsapp-integration
|
|
3
|
-
description: Use ao integrar Evolution Go (whatsmeow) ou Meta Cloud API com Supabase B2B multi-tenant
|
|
3
|
+
description: Use ao integrar Evolution Go (whatsmeow) ou Meta Cloud API com Supabase B2B multi-tenant…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Evolution Go + WhatsApp — Integração Multi-Tenant Supabase
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: example-skill
|
|
3
|
-
description: Example skill template. Replace with your own. Use when the user mentions "example", "demo", or asks how skills work.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Example skill
|
|
7
|
-
|
|
8
|
-
This is the SKILL.md of an example skill. Skills are lightweight expertise
|
|
9
|
-
packs that an LLM loads when its description matches the user's intent.
|
|
10
|
-
|
|
11
|
-
## When to use
|
|
12
|
-
|
|
13
|
-
The frontmatter `description` is what triggers a skill. Be specific about
|
|
14
|
-
*when* to use it, not just *what* it does.
|
|
15
|
-
|
|
16
|
-
Example trigger phrases:
|
|
17
|
-
- "show me an example skill"
|
|
18
|
-
- "how do skills work"
|
|
19
|
-
- "demo the skill loading"
|
|
20
|
-
|
|
21
|
-
## What this skill does
|
|
22
|
-
|
|
23
|
-
When loaded, this skill instructs the LLM to:
|
|
24
|
-
|
|
25
|
-
1. Acknowledge that the example skill loaded.
|
|
26
|
-
2. Explain in one sentence what skills are.
|
|
27
|
-
3. Point the user at `kit/skills/<name>/SKILL.md` so they know where to author their own.
|
|
28
|
-
|
|
29
|
-
## References
|
|
30
|
-
|
|
31
|
-
Optional `references/` folder next to this file can hold longer docs the LLM
|
|
32
|
-
loads only when needed (saves context window). For example:
|
|
33
|
-
|
|
34
|
-
```
|
|
35
|
-
kit/skills/example-skill/
|
|
36
|
-
├── SKILL.md (this file — always loaded when triggered)
|
|
37
|
-
└── references/
|
|
38
|
-
├── advanced-usage.md
|
|
39
|
-
└── api-reference.md
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Replace this whole folder with your own skill when ready.
|
|
1
|
+
---
|
|
2
|
+
name: example-skill
|
|
3
|
+
description: Example skill template. Replace with your own. Use when the user mentions "example", "demo", or asks how skills work.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Example skill
|
|
7
|
+
|
|
8
|
+
This is the SKILL.md of an example skill. Skills are lightweight expertise
|
|
9
|
+
packs that an LLM loads when its description matches the user's intent.
|
|
10
|
+
|
|
11
|
+
## When to use
|
|
12
|
+
|
|
13
|
+
The frontmatter `description` is what triggers a skill. Be specific about
|
|
14
|
+
*when* to use it, not just *what* it does.
|
|
15
|
+
|
|
16
|
+
Example trigger phrases:
|
|
17
|
+
- "show me an example skill"
|
|
18
|
+
- "how do skills work"
|
|
19
|
+
- "demo the skill loading"
|
|
20
|
+
|
|
21
|
+
## What this skill does
|
|
22
|
+
|
|
23
|
+
When loaded, this skill instructs the LLM to:
|
|
24
|
+
|
|
25
|
+
1. Acknowledge that the example skill loaded.
|
|
26
|
+
2. Explain in one sentence what skills are.
|
|
27
|
+
3. Point the user at `kit/skills/<name>/SKILL.md` so they know where to author their own.
|
|
28
|
+
|
|
29
|
+
## References
|
|
30
|
+
|
|
31
|
+
Optional `references/` folder next to this file can hold longer docs the LLM
|
|
32
|
+
loads only when needed (saves context window). For example:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
kit/skills/example-skill/
|
|
36
|
+
├── SKILL.md (this file — always loaded when triggered)
|
|
37
|
+
└── references/
|
|
38
|
+
├── advanced-usage.md
|
|
39
|
+
└── api-reference.md
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Replace this whole folder with your own skill when ready.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: legacy-api-only-applications
|
|
3
|
-
description: Use ao escrever ou refatorar código que é maioritariamente wrapper de API externa (cap 15 Feathers + Supabase Edge Functions). Adapter / anti-corruption layer canônico
|
|
3
|
+
description: Use ao escrever ou refatorar código que é maioritariamente wrapper de API externa (cap 15 Feathers + Supabase Edge Functions). Adapter / anti-corruption layer canônico…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Legacy — API-Only Applications
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: legacy-characterization-tests
|
|
3
|
-
description: Use ao refatorar código legado SEM testes prévios — characterization tests (cap 13 Feathers) capturam comportamento atual como golden snapshot, viram oracle imutável durante o refactor.
|
|
3
|
+
description: Use ao refatorar código legado SEM testes prévios — characterization tests (cap 13 Feathers) capturam comportamento atual como golden snapshot, viram oracle imutável durante o refactor.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Legacy — Characterization Tests
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: legacy-effect-analysis
|
|
3
|
-
description: Use ao decidir quais testes escrever em código sem testes — effect sketch (cap 11-12 Feathers) rastreia propagação de efeitos do change point para inflection/pinch points onde 1 teste
|
|
3
|
+
description: Use ao decidir quais testes escrever em código sem testes — effect sketch (cap 11-12 Feathers) rastreia propagação de efeitos do change point para inflection/pinch points onde 1 teste cob…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Legacy — Effect Analysis
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: legacy-extract-class
|
|
3
|
-
description: Use ao identificar classes "muito grandes" (cap 20 Feathers) com responsibility hot spots — extract class para separar responsabilidades.
|
|
3
|
+
description: Use ao identificar classes "muito grandes" (cap 20 Feathers) com responsibility hot spots — extract class para separar responsabilidades.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Legacy — Extract Class
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: legacy-programming-by-difference
|
|
3
|
-
description: Use ao adicionar comportamento variante a código legado via subclassing/composition (cap 8 Feathers) — ponte temporária quando refactor estrutural ainda não cabe. Modernização 2026
|
|
3
|
+
description: Use ao adicionar comportamento variante a código legado via subclassing/composition (cap 8 Feathers) — ponte temporária quando refactor estrutural ainda não cabe. Modernização 2026…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Legacy — Programming by Difference
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: legacy-seams-and-test-harness
|
|
3
|
-
description: Use ao identificar pontos de extensão (seams) em código não-testável e aplicar uma das ~24 dependency-breaking techniques (cap 25 Feathers) para colocar código sob test harness.
|
|
3
|
+
description: Use ao identificar pontos de extensão (seams) em código não-testável e aplicar uma das ~24 dependency-breaking techniques (cap 25 Feathers) para colocar código sob test harness.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Legacy — Seams & Test Harness
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: legacy-shotgun-surgery
|
|
3
|
-
description: Use ao detectar mesma mudança espalhada em N lugares (cap 21 Feathers) — extract before modify para reduzir change point. Modernização 2026
|
|
3
|
+
description: Use ao detectar mesma mudança espalhada em N lugares (cap 21 Feathers) — extract before modify para reduzir change point. Modernização 2026…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Legacy — Shotgun Surgery
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: legacy-sprout-wrap-techniques
|
|
3
|
-
description: Use ao adicionar comportamento a código legado SEM tempo para colocar tudo sob test harness — Sprout Method, Sprout Class, Wrap Method, Wrap Class (cap 6 Feathers).
|
|
3
|
+
description: Use ao adicionar comportamento a código legado SEM tempo para colocar tudo sob test harness — Sprout Method, Sprout Class, Wrap Method, Wrap Class (cap 6 Feathers).
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Legacy — Sprout / Wrap Techniques
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: legacy-storytelling-naked-crc
|
|
3
|
-
description: Use ao precisar entender codebase desconhecido antes de mudar (cap 16-17 Feathers) — telling the story + naked CRC sketches. Modernização 2026
|
|
3
|
+
description: Use ao precisar entender codebase desconhecido antes de mudar (cap 16-17 Feathers) — telling the story + naked CRC sketches. Modernização 2026…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Legacy — Storytelling & Naked CRC
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lgpd-multi-tenant-compliance
|
|
3
|
-
description: Use ao implementar compliance LGPD (Lei 13.709/2018) per-tenant em B2B SaaS Supabase — 9 direitos Art. 18 com workflow per-org, DSR SLA 15 dias Art.
|
|
3
|
+
description: Use ao implementar compliance LGPD (Lei 13.709/2018) per-tenant em B2B SaaS Supabase — 9 direitos Art. 18 com workflow per-org, DSR SLA 15 dias Art.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# LGPD Multi-Tenant Compliance — Lei 13.709/2018
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: member-invite-flow
|
|
3
|
-
description: Use ao implementar invite de membros em B2B SaaS multi-tenant Supabase
|
|
3
|
+
description: Use ao implementar invite de membros em B2B SaaS multi-tenant Supabase…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Member Invite Flow — B2B SaaS Multi-Tenant
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: member-management-react-shadcn
|
|
3
|
-
description: Use ao implementar UI de member management em B2B SaaS multi-tenant React + shadcn/ui
|
|
3
|
+
description: Use ao implementar UI de member management em B2B SaaS multi-tenant React + shadcn/ui…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Member Management — React + shadcn/ui
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: multi-tenant-performance-scaling
|
|
3
|
-
description: Use ao escalar Postgres multi-tenant em Supabase — Supavisor transaction mode (porta 6543), partial indexes obrigatórios em colunas de RLS, helper functions STABLE, partitioning por org_id
|
|
3
|
+
description: Use ao escalar Postgres multi-tenant em Supabase — Supavisor transaction mode (porta 6543), partial indexes obrigatórios em colunas de RLS, helper functions STABLE, partitioning por org_id …
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Multi-Tenant Performance & Scaling — Postgres + Supabase
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: multi-tenant-rls-hierarchy
|
|
3
|
-
description: Use ao escrever RLS hierárquica multi-tenant (org→dept→role→permission→super-admin bypass) em Supabase.
|
|
3
|
+
description: Use ao escrever RLS hierárquica multi-tenant (org→dept→role→permission→super-admin bypass) em Supabase.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Multi-Tenant RLS Hierarchy — Helper Functions + Policies
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: org-onboarding-flow
|
|
3
|
-
description: Use ao implementar fluxo signup → criar org → primeiro admin → setup wizard em B2B SaaS Supabase. Atomicidade na criação (org + first member em 1 trx). Slug imutável + redirect trail.
|
|
3
|
+
description: Use ao implementar fluxo signup → criar org → primeiro admin → setup wizard em B2B SaaS Supabase. Atomicidade na criação (org + first member em 1 trx). Slug imutável + redirect trail.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Org Onboarding Flow — B2B SaaS Multi-Tenant
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: org-switcher-react-pattern
|
|
3
|
-
description: Use ao implementar org switcher React em B2B SaaS multi-tenant — URL pattern /orgs/[slug]/ (Next.js App Router middleware) ou useParams() (Vite SPA + React Router v6), zustand v5 persist para
|
|
3
|
+
description: Use ao implementar org switcher React em B2B SaaS multi-tenant — URL pattern /orgs/[slug]/ (Next.js App Router middleware) ou useParams() (Vite SPA + React Router v6), zustand v5 persist para act…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Org Switcher — React Pattern Multi-Tenant
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: permission-gate-react-pattern
|
|
3
|
-
description: Use ao implementar permission gates React em B2B SaaS multi-tenant
|
|
3
|
+
description: "Use ao implementar permission gates React em B2B SaaS multi-tenant…"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Permission Gate — React Pattern (CASL)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: postgres-isolamento-concorrencia
|
|
3
|
-
description: Use ao escrever transação Postgres com risco de race condition
|
|
3
|
+
description: Use ao escrever transação Postgres com risco de race condition…
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Isolamento e Concorrência Postgres — 6 Race Conditions, Decision Tree, 3 Padrões para Lost Update
|