sinapse-ai 9.3.0 → 9.5.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/.claude/CLAUDE.md +60 -341
- package/.claude/hooks/enforce-architecture-first.py +197 -197
- package/.claude/hooks/enforce-git-push-authority.sh +25 -4
- package/.claude/hooks/mind-clone-governance.py +193 -193
- package/.claude/hooks/read-protection.py +152 -152
- package/.claude/hooks/sql-governance.py +183 -183
- package/.claude/hooks/verify-packages.cjs +83 -0
- package/.claude/hooks/write-path-validation.py +195 -195
- package/.claude/rules/agent-authority.md +6 -0
- package/.claude/rules/agent-handoff.md +5 -0
- package/.claude/rules/cross-squad-routing.md +5 -0
- package/.claude/rules/hook-governance.md +7 -0
- package/.claude/rules/mandatory-delegation.md +24 -0
- package/.claude/rules/mcp-usage.md +3 -1
- package/.claude/rules/project-intelligence.md +63 -0
- package/.claude/rules/response-format.md +4 -0
- package/.claude/rules/safe-collaboration.md +14 -2
- package/.claude/rules/security-data-protection.md +27 -0
- package/.claude/rules/squad-awareness.md +96 -68
- package/.claude/rules/token-economy.md +148 -0
- package/.claude/rules/tool-examples.md +6 -0
- package/.claude/rules/workflow-execution.md +7 -0
- package/.codex/agents/analyst.md +342 -71
- package/.codex/agents/architect.md +533 -68
- package/.codex/agents/data-engineer.md +530 -106
- package/.codex/agents/developer.md +657 -0
- package/.codex/agents/devops.md +639 -69
- package/.codex/agents/product-lead.md +362 -0
- package/.codex/agents/project-lead.md +405 -0
- package/.codex/agents/quality-gate.md +538 -0
- package/.codex/agents/sinapse-orqx.md +9 -7
- package/.codex/agents/sprint-lead.md +315 -0
- package/.codex/agents/squad-creator.md +402 -0
- package/.codex/agents/ux-design-expert.md +523 -0
- package/.codex/delegation-matrix.json +756 -44
- package/.codex/handoff-packet.schema.json +30 -6
- package/.sinapse-ai/core/code-intel/registry-syncer.js +56 -3
- package/.sinapse-ai/core/doctor/checks/agent-memory.js +5 -1
- package/.sinapse-ai/core/doctor/checks/claude-md.js +4 -1
- package/.sinapse-ai/core/doctor/checks/code-intel.js +5 -1
- package/.sinapse-ai/core/doctor/checks/commands-count.js +4 -1
- package/.sinapse-ai/core/doctor/checks/constitution-consistency.js +4 -1
- package/.sinapse-ai/core/doctor/checks/core-config.js +4 -1
- package/.sinapse-ai/core/doctor/checks/entity-registry.js +6 -1
- package/.sinapse-ai/core/doctor/checks/git-hooks.js +5 -1
- package/.sinapse-ai/core/doctor/checks/graph-dashboard.js +4 -1
- package/.sinapse-ai/core/doctor/checks/hooks-claude-count.js +5 -1
- package/.sinapse-ai/core/doctor/checks/ide-sync.js +4 -1
- package/.sinapse-ai/core/doctor/checks/node-version.js +4 -1
- package/.sinapse-ai/core/doctor/checks/npm-packages.js +4 -1
- package/.sinapse-ai/core/doctor/checks/rules-files.js +4 -1
- package/.sinapse-ai/core/doctor/checks/settings-json.js +4 -1
- package/.sinapse-ai/core/doctor/checks/skills-count.js +4 -1
- package/.sinapse-ai/core/doctor/index.js +157 -50
- package/.sinapse-ai/core/ids/registry-updater.js +6 -1
- package/.sinapse-ai/core/logger/index.js +319 -0
- package/.sinapse-ai/core/orchestration/terminal-spawner.js +2 -2
- package/.sinapse-ai/core/telemetry/index.js +247 -0
- package/.sinapse-ai/data/entity-registry.yaml +1060 -808
- package/.sinapse-ai/development/agents/analyst.md +90 -0
- package/.sinapse-ai/development/agents/architect.md +78 -0
- package/.sinapse-ai/development/agents/data-engineer.md +38 -0
- package/.sinapse-ai/development/agents/developer.md +97 -0
- package/.sinapse-ai/development/agents/devops.md +121 -0
- package/.sinapse-ai/development/agents/product-lead.md +27 -0
- package/.sinapse-ai/development/agents/project-lead.md +28 -0
- package/.sinapse-ai/development/agents/quality-gate.md +89 -0
- package/.sinapse-ai/development/agents/sprint-lead/MEMORY.md +8 -0
- package/.sinapse-ai/development/agents/sprint-lead.md +28 -0
- package/.sinapse-ai/development/agents/squad-creator.md +58 -0
- package/.sinapse-ai/development/agents/ux-design-expert.md +28 -0
- package/.sinapse-ai/development/checklists/agent-quality-gate.md +27 -0
- package/.sinapse-ai/development/checklists/brownfield-compatibility-checklist.md +20 -0
- package/.sinapse-ai/development/checklists/code-review-checklist.md +106 -0
- package/.sinapse-ai/development/checklists/issue-triage-checklist.md +9 -0
- package/.sinapse-ai/development/checklists/memory-audit-checklist.md +16 -0
- package/.sinapse-ai/development/checklists/pr-quality-checklist.md +72 -0
- package/.sinapse-ai/development/checklists/security-deployment-checklist.md +54 -0
- package/.sinapse-ai/development/checklists/self-critique-checklist.md +19 -1
- package/.sinapse-ai/development/knowledge-base/agent-communication-protocol.md +127 -0
- package/.sinapse-ai/development/knowledge-base/database-scaling-patterns.md +374 -0
- package/.sinapse-ai/development/knowledge-base/environment-deployment-patterns.md +353 -0
- package/.sinapse-ai/development/knowledge-base/gotchas-patterns.md +224 -0
- package/.sinapse-ai/development/knowledge-base/infrastructure-decision-framework.md +221 -0
- package/.sinapse-ai/development/knowledge-base/security-pre-deploy-checklist.md +410 -0
- package/.sinapse-ai/development/knowledge-base/software-architecture-patterns.md +299 -0
- package/.sinapse-ai/development/knowledge-base/token-economy-guide.md +198 -0
- package/.sinapse-ai/development/scripts/populate-entity-registry.js +5 -1
- package/.sinapse-ai/development/skills/captcha-handler.md +82 -0
- package/.sinapse-ai/development/skills/chrome-brain.md +81 -0
- package/.sinapse-ai/development/skills/debug.md +57 -0
- package/.sinapse-ai/development/skills/deploy-readiness.md +93 -0
- package/.sinapse-ai/development/skills/fast-review.md +69 -0
- package/.sinapse-ai/development/skills/model-router.md +92 -0
- package/.sinapse-ai/development/skills/research-synthesis.md +77 -0
- package/.sinapse-ai/development/skills/security-scan.md +73 -0
- package/.sinapse-ai/development/skills/sinapse-methodology.md +175 -0
- package/.sinapse-ai/development/skills/story-fast-track.md +71 -0
- package/.sinapse-ai/development/skills/verify.md +53 -0
- package/.sinapse-ai/development/tasks/dev-develop-story.md +10 -0
- package/.sinapse-ai/development/tasks/environment-promotion-pipeline.md +582 -0
- package/.sinapse-ai/development/tasks/generate-agent-handoff.md +223 -0
- package/.sinapse-ai/development/tasks/infrastructure-assessment.md +432 -0
- package/.sinapse-ai/development/tasks/load-testing-setup.md +611 -0
- package/.sinapse-ai/development/tasks/observability-blueprint.md +562 -0
- package/.sinapse-ai/development/templates/legal/breach-notification-tmpl.md +113 -0
- package/.sinapse-ai/development/templates/legal/privacy-policy-tmpl.md +93 -0
- package/.sinapse-ai/development/templates/legal/terms-of-service-tmpl.md +85 -0
- package/.sinapse-ai/development/templates/service-template/README.md.hbs +159 -159
- package/.sinapse-ai/development/templates/service-template/__tests__/index.test.ts.hbs +238 -238
- package/.sinapse-ai/development/templates/service-template/client.ts.hbs +404 -404
- package/.sinapse-ai/development/templates/service-template/errors.ts.hbs +183 -183
- package/.sinapse-ai/development/templates/service-template/index.ts.hbs +121 -121
- package/.sinapse-ai/development/templates/service-template/package.json.hbs +88 -88
- package/.sinapse-ai/development/templates/service-template/types.ts.hbs +146 -146
- package/.sinapse-ai/development/templates/squad/agent-template.md +17 -4
- package/.sinapse-ai/development/templates/squad/checklist-template.md +13 -5
- package/.sinapse-ai/development/templates/squad/task-template.md +7 -0
- package/.sinapse-ai/development/templates/squad/workflow-template.yaml +7 -0
- package/.sinapse-ai/development/templates/squad-template/LICENSE +22 -22
- package/.sinapse-ai/development/workflows/fast-track.yaml +87 -0
- package/.sinapse-ai/development/workflows/story-development-cycle.yaml +40 -1
- package/.sinapse-ai/hooks/ids-post-commit.js +22 -0
- package/.sinapse-ai/infrastructure/contracts/compatibility/README.md +42 -0
- package/.sinapse-ai/infrastructure/contracts/compatibility/sinapse-current.yaml +35 -0
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -127
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -71
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -51
- package/.sinapse-ai/infrastructure/scripts/pr-review-ai.js +16 -13
- package/.sinapse-ai/infrastructure/scripts/setup-project-infra.js +128 -0
- package/.sinapse-ai/infrastructure/scripts/test-discovery.js +8 -3
- package/.sinapse-ai/infrastructure/scripts/validate-codex-delegation.js +3 -1
- package/.sinapse-ai/infrastructure/scripts/validate-manifest-parity.js +380 -0
- package/.sinapse-ai/infrastructure/scripts/validate-parity.js +76 -25
- package/.sinapse-ai/infrastructure/templates/coderabbit.yaml.template +280 -280
- package/.sinapse-ai/infrastructure/templates/config/env.example +16 -0
- package/.sinapse-ai/infrastructure/templates/config/gitignore-additions.tmpl +59 -0
- package/.sinapse-ai/infrastructure/templates/github/CODEOWNERS.template +12 -0
- package/.sinapse-ai/infrastructure/templates/github/PULL_REQUEST_TEMPLATE.md +29 -0
- package/.sinapse-ai/infrastructure/templates/github/ci-template.yml +77 -0
- package/.sinapse-ai/infrastructure/templates/github/issue-templates/bug_report.md +34 -0
- package/.sinapse-ai/infrastructure/templates/github/issue-templates/feature_request.md +19 -0
- package/.sinapse-ai/infrastructure/templates/github-workflows/ci.yml.template +170 -170
- package/.sinapse-ai/infrastructure/templates/github-workflows/pr-automation.yml.template +331 -331
- package/.sinapse-ai/infrastructure/templates/github-workflows/release.yml.template +197 -197
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +19 -19
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-node.tmpl +86 -86
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-python.tmpl +146 -146
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-sinapse-base.tmpl +64 -64
- package/.sinapse-ai/infrastructure/templates/sinapse-sync.yaml.template +183 -183
- package/.sinapse-ai/install-manifest.yaml +333 -162
- package/.sinapse-ai/local-config.yaml.template +65 -65
- package/.sinapse-ai/monitor/hooks/lib/__init__.py +2 -2
- package/.sinapse-ai/monitor/hooks/lib/enrich.py +59 -59
- package/.sinapse-ai/monitor/hooks/lib/send_event.py +48 -48
- package/.sinapse-ai/monitor/hooks/notification.py +30 -30
- package/.sinapse-ai/monitor/hooks/post_tool_use.py +46 -46
- package/.sinapse-ai/monitor/hooks/pre_compact.py +30 -30
- package/.sinapse-ai/monitor/hooks/pre_tool_use.py +41 -41
- package/.sinapse-ai/monitor/hooks/stop.py +30 -30
- package/.sinapse-ai/monitor/hooks/subagent_stop.py +30 -30
- package/.sinapse-ai/monitor/hooks/user_prompt_submit.py +39 -39
- package/.sinapse-ai/product/templates/adr.hbs +126 -126
- package/.sinapse-ai/product/templates/dbdr.hbs +242 -242
- package/.sinapse-ai/product/templates/epic.hbs +213 -213
- package/.sinapse-ai/product/templates/pmdr.hbs +187 -187
- package/.sinapse-ai/product/templates/prd-v2.0.hbs +217 -217
- package/.sinapse-ai/product/templates/prd.hbs +202 -202
- package/.sinapse-ai/product/templates/story-tmpl.yaml +59 -0
- package/.sinapse-ai/product/templates/story.hbs +264 -264
- package/.sinapse-ai/product/templates/task.hbs +171 -171
- package/.sinapse-ai/product/templates/tmpl-comment-on-examples.sql +159 -159
- package/.sinapse-ai/product/templates/tmpl-migration-script.sql +92 -92
- package/.sinapse-ai/product/templates/tmpl-rls-granular-policies.sql +105 -105
- package/.sinapse-ai/product/templates/tmpl-rls-kiss-policy.sql +11 -11
- package/.sinapse-ai/product/templates/tmpl-rls-roles.sql +136 -136
- package/.sinapse-ai/product/templates/tmpl-rls-simple.sql +78 -78
- package/.sinapse-ai/product/templates/tmpl-rls-tenant.sql +153 -153
- package/.sinapse-ai/product/templates/tmpl-rollback-script.sql +78 -78
- package/.sinapse-ai/product/templates/tmpl-seed-data.sql +141 -141
- package/.sinapse-ai/product/templates/tmpl-smoke-test.sql +17 -17
- package/.sinapse-ai/product/templates/tmpl-staging-copy-merge.sql +140 -140
- package/.sinapse-ai/product/templates/tmpl-stored-proc.sql +141 -141
- package/.sinapse-ai/product/templates/tmpl-trigger.sql +153 -153
- package/.sinapse-ai/product/templates/tmpl-view-materialized.sql +134 -134
- package/.sinapse-ai/product/templates/tmpl-view.sql +178 -178
- package/.sinapse-ai/scripts/diagnostics/health-dashboard/package-lock.json +427 -355
- package/LICENSE +34 -34
- package/README.en.md +167 -20
- package/README.md +190 -22
- package/bin/cli.js +510 -196
- package/bin/postinstall.js +564 -0
- package/bin/sinapse-cli +283 -283
- package/bin/sinapse-graph.js +9 -0
- package/bin/sinapse-init.js +36 -4
- package/bin/sinapse-minimal.js +20 -9
- package/bin/sinapse.js +202 -122
- package/bin/utils/deprecation-warning.js +46 -0
- package/bin/utils/pre-push-safety.js +14 -0
- package/docs/TELEMETRY.md +131 -0
- package/docs/chrome-brain-upgrade-plan.md +624 -0
- package/docs/codex-integration-process.md +22 -0
- package/docs/codex-parity-program.md +27 -0
- package/docs/framework/orqx-plan.md +1 -1
- package/docs/ide-integration.md +36 -0
- package/docs/installation/chrome-brain.md +17 -7
- package/docs/mega-upgrade-orchestration-plan.md +71 -0
- package/docs/pt/contributing.md +20 -0
- package/docs/research-synthesis-for-upgrade.md +511 -0
- package/docs/security-audit-report.md +306 -0
- package/package.json +20 -8
- package/packages/installer/src/config/configure-environment.js +19 -44
- package/packages/installer/src/detection/detect-project-type.js +181 -63
- package/packages/installer/src/installer/manifest-signature.js +32 -17
- package/packages/installer/src/wizard/i18n.js +12 -0
- package/packages/installer/src/wizard/ide-config-generator.js +8 -39
- package/packages/installer/src/wizard/index.js +119 -14
- package/packages/installer/src/wizard/questions.js +2 -3
- package/packages/installer/tests/integration/environment-configuration.test.js +7 -5
- package/packages/installer/tests/unit/detection/detect-project-type.test.js +138 -1
- package/packages/installer/tests/unit/doctor/doctor-orchestrator.test.js +3 -3
- package/packages/sinapse-install/bin/edmcp.js +0 -0
- package/packages/sinapse-install/bin/sinapse-install.js +0 -0
- package/packages/sinapse-pro-cli/bin/sinapse-pro.js +0 -0
- package/scripts/check-markdown-links.py +353 -353
- package/scripts/coverage-report-summary.js +169 -0
- package/scripts/generate-install-manifest.js +6 -2
- package/scripts/release-readiness.js +169 -0
- package/scripts/test-install-matrix-local.sh +153 -0
- package/scripts/validate-install-docs.js +394 -0
- package/scripts/validate-no-external-refs.js +376 -0
- package/scripts/validate-squad-orqx.js +302 -0
- package/scripts/validate-story-meta.js +263 -0
- package/squads/claude-code-mastery/CHANGELOG.md +1 -1
- package/squads/claude-code-mastery/README.md +2 -2
- package/squads/claude-code-mastery/knowledge-base/claude-code-internals-reference.md +927 -0
- package/squads/claude-code-mastery/squad.yaml +1 -1
- package/squads/squad-artdir/README.md +90 -0
- package/squads/squad-artdir/agents/accessibility-guardian.md +184 -0
- package/squads/squad-artdir/agents/artdir-orqx.md +145 -0
- package/squads/squad-artdir/agents/color-psychologist.md +166 -0
- package/squads/squad-artdir/agents/cro-persuasion.md +161 -0
- package/squads/squad-artdir/agents/design-system-architect.md +100 -0
- package/squads/squad-artdir/agents/ia-architect.md +169 -0
- package/squads/squad-artdir/agents/interaction-designer.md +162 -0
- package/squads/squad-artdir/agents/layout-engineer.md +163 -0
- package/squads/squad-artdir/agents/motion-architect.md +185 -0
- package/squads/squad-artdir/agents/platform-aesthetic-director.md +84 -0
- package/squads/squad-artdir/agents/premium-packaging-strategist.md +107 -0
- package/squads/squad-artdir/agents/product-surface-director.md +86 -0
- package/squads/squad-artdir/agents/type-systemist.md +138 -0
- package/squads/squad-artdir/agents/visual-strategist.md +127 -0
- package/squads/squad-artdir/checklists/seven-pillars-validation-checklist.md +172 -0
- package/squads/squad-artdir/knowledge-base/case-nyo-ia-reference.md +289 -0
- package/squads/squad-artdir/knowledge-base/deliverables-templates.md +457 -0
- package/squads/squad-artdir/knowledge-base/motion-technique-catalog.md +247 -0
- package/squads/squad-artdir/knowledge-base/premium-packaging-principles.md +133 -0
- package/squads/squad-artdir/knowledge-base/psychological-toolkit.md +229 -0
- package/squads/squad-artdir/knowledge-base/saas-art-direction-canon.md +242 -0
- package/squads/squad-artdir/knowledge-base/seven-pillars-framework.md +289 -0
- package/squads/squad-artdir/knowledge-base/ten-pillars-framework.md +221 -0
- package/squads/squad-artdir/package.json +20 -0
- package/squads/squad-artdir/squad.yaml +271 -0
- package/squads/squad-artdir/tasks/audit-conversion.md +97 -0
- package/squads/squad-artdir/tasks/audit-drift-multi-surface.md +55 -0
- package/squads/squad-artdir/tasks/consult-saas-canon.md +54 -0
- package/squads/squad-artdir/tasks/create-art-direction-brief.md +110 -0
- package/squads/squad-artdir/tasks/create-premium-packaging-brief.md +61 -0
- package/squads/squad-artdir/tasks/create-wireflow.md +84 -0
- package/squads/squad-artdir/tasks/design-color-system.md +81 -0
- package/squads/squad-artdir/tasks/design-product-surface.md +60 -0
- package/squads/squad-artdir/tasks/design-token-system.md +58 -0
- package/squads/squad-artdir/tasks/diagnose-visual-language.md +92 -0
- package/squads/squad-artdir/tasks/first-5-minutes-choreography.md +65 -0
- package/squads/squad-artdir/tasks/specify-motion-system.md +84 -0
- package/squads/squad-artdir/tasks/validate-against-pillars.md +143 -0
- package/squads/squad-artdir/templates/art-direction-brief-template.md +215 -0
- package/squads/squad-artdir/workflows/conversion-audit-cycle.yaml +78 -0
- package/squads/squad-artdir/workflows/full-art-direction-cycle.yaml +98 -0
- package/squads/squad-artdir/workflows/saas-platform-art-direction-cycle.yaml +174 -0
- package/squads/squad-brand/knowledge-base/ai-visual-generation-canon.md +234 -0
- package/squads/squad-brand/knowledge-base/archetype-brand-mapping.md +12 -1
- package/squads/squad-brand/knowledge-base/brand-activism-cultural-branding.md +216 -0
- package/squads/squad-brand/knowledge-base/brand-audit-criteria.md +58 -0
- package/squads/squad-brand/knowledge-base/brand-digital-strategy.md +188 -0
- package/squads/squad-brand/knowledge-base/brand-legal-ip.md +222 -0
- package/squads/squad-brand/knowledge-base/brand-naming-framework.md +163 -0
- package/squads/squad-brand/knowledge-base/branding-master-reference.md +1001 -0
- package/squads/squad-brand/knowledge-base/color-psychology.md +25 -12
- package/squads/squad-brand/knowledge-base/employer-personal-branding.md +206 -0
- package/squads/squad-brand/knowledge-base/routing-catalog.md +34 -0
- package/squads/squad-brand/knowledge-base/sonic-branding-principles.md +6 -1
- package/squads/squad-brand/knowledge-base/typography-personality.md +34 -0
- package/squads/squad-brand/squad.yaml +20 -6
- package/squads/squad-claude/knowledge-base/context-window-optimization.md +334 -0
- package/squads/squad-claude/knowledge-base/knowledge-architecture-reference.md +403 -0
- package/squads/squad-claude/knowledge-base/memory-systems-reference.md +412 -0
- package/squads/squad-claude/knowledge-base/obsidian-claude-integration.md +423 -0
- package/squads/squad-claude/knowledge-base/retrieval-augmented-generation.md +320 -0
- package/squads/squad-claude/knowledge-base/skill-creation-patterns.md +380 -0
- package/squads/squad-claude/knowledge-base/swarm-orchestration-patterns.md +411 -0
- package/squads/squad-cloning/knowledge-base/clone-quality-assurance.md +211 -0
- package/squads/squad-cloning/knowledge-base/confidence-scoring.md +51 -0
- package/squads/squad-cloning/knowledge-base/cross-squad-deployment.md +47 -0
- package/squads/squad-cloning/knowledge-base/ethical-guidelines.md +237 -0
- package/squads/squad-cloning/knowledge-base/knowledge-graph-for-clones.md +295 -0
- package/squads/squad-cloning/knowledge-base/memory-architecture-for-clones.md +229 -0
- package/squads/squad-cloning/knowledge-base/multi-agent-deployment-patterns.md +320 -0
- package/squads/squad-cloning/knowledge-base/skill-standard-for-clones.md +262 -0
- package/squads/squad-cloning/knowledge-base/sop-extraction-guide.md +243 -0
- package/squads/squad-commercial/knowledge-base/account-based-selling.md +206 -0
- package/squads/squad-commercial/knowledge-base/ai-as-competitive-infrastructure.md +14 -0
- package/squads/squad-commercial/knowledge-base/ai-in-sales.md +199 -0
- package/squads/squad-commercial/knowledge-base/brazilian-sales-context.md +195 -0
- package/squads/squad-commercial/knowledge-base/customer-success-operations.md +83 -2
- package/squads/squad-commercial/knowledge-base/prospecting-pipeline-generation.md +69 -0
- package/squads/squad-commercial/knowledge-base/sales-enablement-playbook.md +260 -0
- package/squads/squad-commercial/knowledge-base/sales-methodology-comparison.md +185 -0
- package/squads/squad-commercial/knowledge-base/sales-revenue-master-reference.md +1123 -0
- package/squads/squad-content/knowledge-base/ai-native-content-loop.md +220 -0
- package/squads/squad-content/knowledge-base/brazilian-content-context.md +176 -0
- package/squads/squad-content/knowledge-base/competitor-analysis-methods.md +40 -1
- package/squads/squad-content/knowledge-base/content-architecture-taxonomy.md +206 -0
- package/squads/squad-content/knowledge-base/content-formats-encyclopedia.md +58 -1
- package/squads/squad-content/knowledge-base/content-references-bibliography.md +130 -0
- package/squads/squad-content/knowledge-base/content-strategy-master-reference.md +1097 -0
- package/squads/squad-content/knowledge-base/content-tech-stack.md +150 -0
- package/squads/squad-content/knowledge-base/copywriting-formulas-library.md +188 -0
- package/squads/squad-content/knowledge-base/email-newsletter-strategy.md +161 -0
- package/squads/squad-content/knowledge-base/platform-algorithm-intelligence.md +86 -1
- package/squads/squad-content/knowledge-base/signal-intelligence-v2.md +234 -0
- package/squads/squad-content/knowledge-base/social-algorithms-master-reference.md +1007 -0
- package/squads/squad-content/knowledge-base/task-ownership-map.md +235 -0
- package/squads/squad-content/knowledge-base/video-audio-content-playbook.md +218 -0
- package/squads/squad-content/squad.yaml +187 -27
- package/squads/squad-copy/knowledge-base/ai-copy-human-loop-canon.md +235 -0
- package/squads/squad-copy/knowledge-base/ai-copy-production.md +254 -0
- package/squads/squad-copy/knowledge-base/brazilian-copywriting-context.md +242 -0
- package/squads/squad-copy/knowledge-base/email-copywriting-system.md +299 -0
- package/squads/squad-copy/knowledge-base/landing-page-copy-architecture.md +267 -0
- package/squads/squad-copy/knowledge-base/power-words-catalog.md +205 -0
- package/squads/squad-copy/knowledge-base/seo-copywriting.md +255 -0
- package/squads/squad-copy/knowledge-base/video-script-copywriting.md +239 -0
- package/squads/squad-copy/squad.yaml +19 -4
- package/squads/squad-council/knowledge-base/brand-strategy-models.md +193 -0
- package/squads/squad-council/knowledge-base/growth-strategy-models.md +267 -0
- package/squads/squad-council/knowledge-base/innovation-disruption-frameworks.md +193 -0
- package/squads/squad-council/knowledge-base/market-analysis-frameworks.md +240 -0
- package/squads/squad-council/knowledge-base/organizational-leadership-models.md +212 -0
- package/squads/squad-council/knowledge-base/sales-strategy-models.md +215 -0
- package/squads/squad-courses/knowledge-base/course-launch-strategy.md +251 -0
- package/squads/squad-courses/knowledge-base/domain-advocacia-curriculum.md +385 -0
- package/squads/squad-courses/knowledge-base/domain-contabilidade-curriculum.md +266 -0
- package/squads/squad-courses/knowledge-base/platform-comparison.md +68 -0
- package/squads/squad-courses/knowledge-base/video-production-guide.md +70 -0
- package/squads/squad-cybersecurity/knowledge-base/cloud-security-reference.md +363 -0
- package/squads/squad-cybersecurity/knowledge-base/compliance-frameworks.md +273 -0
- package/squads/squad-cybersecurity/knowledge-base/database-security.md +438 -0
- package/squads/squad-cybersecurity/knowledge-base/incident-response-playbook.md +420 -0
- package/squads/squad-cybersecurity/knowledge-base/network-security-reference.md +477 -0
- package/squads/squad-cybersecurity/knowledge-base/penetration-testing-methodology.md +350 -0
- package/squads/squad-cybersecurity/knowledge-base/vulnerability-management.md +349 -0
- package/squads/squad-design/knowledge-base/brazilian-design-context.md +223 -0
- package/squads/squad-design/knowledge-base/component-api-patterns.md +208 -4
- package/squads/squad-design/knowledge-base/cross-surface-token-canon.md +209 -0
- package/squads/squad-design/knowledge-base/design-system-master-reference.md +1302 -0
- package/squads/squad-design/knowledge-base/design-systems-frameworks.md +91 -1
- package/squads/squad-design/knowledge-base/responsive-modern-css.md +96 -4
- package/squads/squad-design/knowledge-base/wcag-aria-reference.md +117 -5
- package/squads/squad-design/knowledge-base/web-performance-reference.md +127 -4
- package/squads/squad-design/squad.yaml +19 -4
- package/squads/squad-finance/knowledge-base/brazilian-taxation.md +263 -0
- package/squads/squad-finance/knowledge-base/contabilidade-master-reference.md +998 -0
- package/squads/squad-finance/knowledge-base/finance-master-reference.md +946 -0
- package/squads/squad-finance/knowledge-base/financial-reporting-analysis.md +316 -0
- package/squads/squad-finance/knowledge-base/fintech-brazilian-context.md +242 -0
- package/squads/squad-finance/knowledge-base/fpa-planning-frameworks.md +286 -0
- package/squads/squad-finance/knowledge-base/ma-and-transactions.md +285 -0
- package/squads/squad-finance/knowledge-base/risk-management.md +233 -0
- package/squads/squad-finance/knowledge-base/startups-venture-capital.md +337 -0
- package/squads/squad-growth/knowledge-base/ai-growth-playbook.md +216 -0
- package/squads/squad-growth/knowledge-base/attribution-models.md +78 -0
- package/squads/squad-growth/knowledge-base/brazilian-growth-context.md +208 -0
- package/squads/squad-growth/knowledge-base/community-led-growth.md +175 -0
- package/squads/squad-growth/knowledge-base/content-marketing-flywheel.md +190 -0
- package/squads/squad-growth/knowledge-base/email-lifecycle-framework.md +192 -0
- package/squads/squad-growth/knowledge-base/growth-frameworks-catalog.md +82 -0
- package/squads/squad-growth/knowledge-base/growth-master-reference.md +1168 -0
- package/squads/squad-growth/knowledge-base/routing-catalog.md +53 -11
- package/squads/squad-paidmedia/knowledge-base/audiences-segmentation-deep.md +285 -0
- package/squads/squad-paidmedia/knowledge-base/creative-strategy-deep.md +294 -0
- package/squads/squad-paidmedia/knowledge-base/google-ads-account-architecture.md +87 -0
- package/squads/squad-paidmedia/knowledge-base/meta-ads-campaign-architecture.md +76 -0
- package/squads/squad-paidmedia/knowledge-base/paid-media-metrics-reference.md +117 -0
- package/squads/squad-paidmedia/knowledge-base/paid-traffic-master-reference.md +1308 -0
- package/squads/squad-paidmedia/knowledge-base/routing-catalog.md +95 -18
- package/squads/squad-paidmedia/knowledge-base/traffic-masters-frameworks.md +71 -0
- package/squads/squad-product/knowledge-base/brazilian-product-context.md +284 -0
- package/squads/squad-product/knowledge-base/discovery-methodology-playbook.md +141 -0
- package/squads/squad-product/knowledge-base/pm-frameworks-reference.md +125 -9
- package/squads/squad-product/knowledge-base/product-analytics-formulas.md +72 -0
- package/squads/squad-product/knowledge-base/product-led-growth-reference.md +155 -13
- package/squads/squad-product/knowledge-base/product-market-fit-framework.md +222 -0
- package/squads/squad-product/knowledge-base/routing-catalog.md +32 -0
- package/squads/squad-research/knowledge-base/agentic-second-brain-reference.md +591 -0
- package/squads/squad-research/knowledge-base/ai-augmented-research.md +212 -0
- package/squads/squad-research/knowledge-base/brazilian-market-research-sources.md +197 -0
- package/squads/squad-research/knowledge-base/community-platforms-reference.md +786 -0
- package/squads/squad-research/knowledge-base/community-research-methods.md +194 -0
- package/squads/squad-research/knowledge-base/mixed-methods-research-design.md +168 -0
- package/squads/squad-research/knowledge-base/network-effects-analysis.md +192 -0
- package/squads/squad-research/knowledge-base/qualitative-research-deep-methods.md +202 -0
- package/squads/squad-research/knowledge-base/quantitative-research-methods.md +208 -0
- package/squads/squad-research/knowledge-base/research-frameworks-encyclopedia.md +40 -0
- package/squads/squad-research/knowledge-base/research-synthesis-frameworks.md +223 -0
- package/squads/squad-storytelling/knowledge-base/brand-mythology-framework.md +236 -0
- package/squads/squad-storytelling/knowledge-base/brazilian-storytelling-context.md +237 -0
- package/squads/squad-storytelling/knowledge-base/data-storytelling.md +232 -0
- package/squads/squad-storytelling/knowledge-base/improv-storytelling.md +226 -0
- package/squads/squad-storytelling/knowledge-base/persuasion-narrative-techniques.md +269 -0
- package/squads/squad-storytelling/knowledge-base/social-movement-narratives.md +191 -0
- package/squads/squad-storytelling/knowledge-base/video-storytelling.md +252 -0
- package/.sinapse-ai/core/registry/service-registry.json +0 -6346
- package/.sinapse-ai/data/registry-update-log.jsonl +0 -1307
- package/.sinapse-ai/manifests/agents.csv +0 -29
- package/.sinapse-ai/manifests/tasks.csv +0 -204
- package/.sinapse-ai/manifests/workers.csv +0 -196
- package/squads/claude-code-mastery/data/swarm-orchestration-patterns.yaml +0 -378
- package/squads/squad-animations/knowledge-base/framer-motion-complete-reference.md +0 -710
- package/squads/squad-animations/knowledge-base/web-animations-api-view-transitions.md +0 -478
- package/squads/squad-growth/tasks/calculate-sample-size.md +0 -121
- package/squads/squad-paidmedia/tasks/calculate-sample-size.md +0 -57
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
# Software Architecture Patterns
|
|
2
|
+
|
|
3
|
+
> **Agente(s):** @architect (Stratum), @developer (Pixel)
|
|
4
|
+
> **Fonte:** fullstack-engineering-animations.md (DEFINITIVE research)
|
|
5
|
+
> **Complementa:** `infrastructure-decision-framework.md` (infra) -- este documento foca em SOFTWARE architecture
|
|
6
|
+
> **Uso:** Consultar ao iniciar projetos novos, escolher patterns, ou avaliar arquitetura existente
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. Architecture Decision Tree
|
|
11
|
+
|
|
12
|
+
### By Project Type
|
|
13
|
+
|
|
14
|
+
| Tipo de Projeto | Arquitetura | State Mgmt | Rendering | DB Pattern |
|
|
15
|
+
|----------------|-------------|-----------|-----------|------------|
|
|
16
|
+
| Landing Page | JAMstack (SSG + Edge) | nuqs (URL) | SSG/ISR | N/A ou Supabase Free |
|
|
17
|
+
| Blog/Content | JAMstack (SSG + ISR) | TanStack Query | SSG + ISR | Supabase + MDX |
|
|
18
|
+
| SaaS B2B | Modular Monolith + Clean Architecture | TanStack Query + Zustand | SSR + Streaming | Multi-tenant shared table |
|
|
19
|
+
| E-commerce | Modular Monolith + CQRS | TanStack Query + Zustand | ISR + SSR | CQRS read models |
|
|
20
|
+
| Fintech | Modular Monolith + DDD + Event Sourcing | TanStack Query + Zustand | SSR | Append-only + audit log |
|
|
21
|
+
| Marketplace | Modular Monolith (evolving) | TanStack Query + Zustand | ISR + SSR | Schema-per-module |
|
|
22
|
+
| Real-time App | Event-Driven + WebSockets | Zustand + Supabase Realtime | SSR + Client | Realtime subscriptions |
|
|
23
|
+
|
|
24
|
+
### By Team Size
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
Projeto novo?
|
|
28
|
+
|
|
|
29
|
+
+-- Equipe <= 5 devs?
|
|
30
|
+
| +-- SIM --> Monolith (com boa estrutura de pastas)
|
|
31
|
+
| +-- NAO --> Modular Monolith
|
|
32
|
+
|
|
|
33
|
+
+-- Equipe > 10 devs?
|
|
34
|
+
| +-- Times independentes com dominios distintos?
|
|
35
|
+
| +-- SIM --> Microservices (seletivo)
|
|
36
|
+
| +-- NAO --> Modular Monolith
|
|
37
|
+
|
|
|
38
|
+
+-- Necessidade de scaling independente comprovada?
|
|
39
|
+
+-- SIM --> Extrair modulo especifico para microservice
|
|
40
|
+
+-- NAO --> Manter no Modular Monolith
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Default for SINAPSE projects:** Modular Monolith. Microservices only with proven need.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 2. Architecture Patterns Decision Matrix
|
|
48
|
+
|
|
49
|
+
| Criterio | Clean Architecture | DDD | Hexagonal | Serverless | JAMstack |
|
|
50
|
+
|----------|-------------------|-----|-----------|------------|----------|
|
|
51
|
+
| **Complexidade de dominio** | Media-Alta | Alta | Media-Alta | Baixa | Baixa |
|
|
52
|
+
| **Team size minimo** | 2+ | 3+ | 2+ | 1+ | 1+ |
|
|
53
|
+
| **Learning curve** | Media | Alta | Media | Baixa | Baixa |
|
|
54
|
+
| **Testabilidade** | Excelente | Excelente | Excelente | Boa | Boa |
|
|
55
|
+
| **Melhor para** | SaaS, enterprise | Dominio complexo | Ports swappable | APIs, event-driven | Content, marketing |
|
|
56
|
+
| **Evitar quando** | CRUDs simples | Dominio trivial | Equipe junior | Long-running jobs | Apps interativas |
|
|
57
|
+
| **Custo de manter** | Medio | Alto | Medio | Baixo | Baixo |
|
|
58
|
+
|
|
59
|
+
### When to Use What
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
Dominio simples (CRUD)?
|
|
63
|
+
+-- SIM --> Serverless/JAMstack (sem over-engineering)
|
|
64
|
+
+-- NAO --> Regras de negocio complexas?
|
|
65
|
+
+-- SIM --> Bounded Contexts claros?
|
|
66
|
+
| +-- SIM --> DDD + Clean Architecture
|
|
67
|
+
| +-- NAO --> Clean Architecture (sem tactical DDD)
|
|
68
|
+
+-- NAO --> Hexagonal (swap adapters easily)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 3. Modular Monolith Structure (Golden Standard)
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
src/
|
|
77
|
+
modules/
|
|
78
|
+
auth/
|
|
79
|
+
domain/ # Entities, Value Objects
|
|
80
|
+
application/ # Use Cases, Services
|
|
81
|
+
infrastructure/ # Repos, APIs externas
|
|
82
|
+
presentation/ # Controllers, Routes
|
|
83
|
+
index.ts # Public API (barrel export)
|
|
84
|
+
billing/
|
|
85
|
+
...
|
|
86
|
+
notifications/
|
|
87
|
+
...
|
|
88
|
+
shared/
|
|
89
|
+
kernel/ # Shared types, Events
|
|
90
|
+
infrastructure/ # Database, Logging, Config
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**5 Principles:**
|
|
94
|
+
1. Each module exposes ONLY a public API (barrel export)
|
|
95
|
+
2. Modules NEVER import directly from another module -- use the public API
|
|
96
|
+
3. Inter-module communication via Domain Events (decoupling)
|
|
97
|
+
4. Each module can have its own DB schema (schema-per-module)
|
|
98
|
+
5. A module can be extracted to microservice when needed
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 4. State Management Patterns
|
|
103
|
+
|
|
104
|
+
### The Modern Stack (2025-2026)
|
|
105
|
+
|
|
106
|
+
| State Type | Tool | When |
|
|
107
|
+
|-----------|------|------|
|
|
108
|
+
| Server State | **TanStack Query** | API data, cache, revalidation |
|
|
109
|
+
| Client State | **Zustand** | UI state, global without boilerplate |
|
|
110
|
+
| URL State | **nuqs** | Filters, pagination, tabs, search params |
|
|
111
|
+
| Form State | **React Hook Form + Zod** | Complex forms with validation |
|
|
112
|
+
| Local State | `useState/useReducer` | Simple component-scoped state |
|
|
113
|
+
|
|
114
|
+
### Decision Flow
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
Data comes from API?
|
|
118
|
+
+-- YES --> TanStack Query (staleTime, cache, optimistic updates)
|
|
119
|
+
+-- NO --> State needs to persist in URL?
|
|
120
|
+
+-- YES --> nuqs (shareable, bookmarkable)
|
|
121
|
+
+-- NO --> State shared across components?
|
|
122
|
+
+-- YES --> Zustand (lightweight global store)
|
|
123
|
+
+-- NO --> useState (local)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Key insight:** TanStack Query reduces network requests by 40-60% vs Redux for same features. Redux is only for existing legacy projects.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 5. Testing Pyramid
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
/\
|
|
134
|
+
/ \
|
|
135
|
+
/ E2E \ ~10% -- Playwright
|
|
136
|
+
/________\ Critical user flows only
|
|
137
|
+
/ \
|
|
138
|
+
/ Integration \ ~30% -- Vitest + MSW
|
|
139
|
+
/______________\ API + components with data
|
|
140
|
+
/ \
|
|
141
|
+
/ Unit Tests \ ~60% -- Vitest
|
|
142
|
+
/____________________\ Domain logic, utils, hooks
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Stack
|
|
146
|
+
|
|
147
|
+
| Layer | Tool | Target |
|
|
148
|
+
|-------|------|--------|
|
|
149
|
+
| Unit | **Vitest** | Pure functions, hooks, utils, domain logic |
|
|
150
|
+
| Component | **Vitest + Testing Library** | React components with interaction |
|
|
151
|
+
| Integration | **Vitest + MSW** | API integration with HTTP mocks |
|
|
152
|
+
| E2E | **Playwright** | Critical flows in real browser |
|
|
153
|
+
| Visual | **Storybook + Chromatic** | Component visual regression |
|
|
154
|
+
|
|
155
|
+
### What to Test at Each Layer
|
|
156
|
+
|
|
157
|
+
| Layer | DO Test | DO NOT Test |
|
|
158
|
+
|-------|---------|-------------|
|
|
159
|
+
| Unit | Domain logic, calculations, validations, transformations | UI rendering, API calls, database |
|
|
160
|
+
| Component | User interaction, conditional rendering, accessibility | API responses, business logic |
|
|
161
|
+
| Integration | API contract, data flow, error handling | Visual layout, pixel-perfect |
|
|
162
|
+
| E2E | Happy path flows, critical business paths | Edge cases (cover in unit/integration) |
|
|
163
|
+
|
|
164
|
+
### MSW Reuse Pattern
|
|
165
|
+
|
|
166
|
+
The same MSW handlers can be shared across Vitest, Playwright, Storybook, and React Native -- define once, reuse everywhere.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## 6. Next.js App Router Patterns
|
|
171
|
+
|
|
172
|
+
### Server-Client Boundary
|
|
173
|
+
|
|
174
|
+
**Rule:** Everything is a Server Component by default. Add `'use client'` only when needed.
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
Server Components (default) Client Components ('use client')
|
|
178
|
+
- DB access, file system - useState, useEffect, hooks
|
|
179
|
+
- Env vars, secrets - Browser APIs (window, document)
|
|
180
|
+
- Zero JS to browser - Event handlers (onClick, etc.)
|
|
181
|
+
- async/await in render - Third-party client libs
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Recommended Folder Structure
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
app/
|
|
188
|
+
(auth)/ # Route group -- auth pages
|
|
189
|
+
login/page.tsx
|
|
190
|
+
register/page.tsx
|
|
191
|
+
layout.tsx
|
|
192
|
+
(dashboard)/ # Route group -- app pages
|
|
193
|
+
dashboard/page.tsx
|
|
194
|
+
settings/page.tsx
|
|
195
|
+
layout.tsx
|
|
196
|
+
api/
|
|
197
|
+
webhooks/stripe/route.ts # Webhook handlers
|
|
198
|
+
layout.tsx # Root layout
|
|
199
|
+
error.tsx # Global error boundary
|
|
200
|
+
loading.tsx # Global loading
|
|
201
|
+
not-found.tsx
|
|
202
|
+
|
|
203
|
+
src/
|
|
204
|
+
components/
|
|
205
|
+
ui/ # Design system (Button, Input, Card)
|
|
206
|
+
features/ # Feature-specific components
|
|
207
|
+
layouts/ # Layout components
|
|
208
|
+
lib/
|
|
209
|
+
actions/ # Server Actions
|
|
210
|
+
db/ # Database client, queries
|
|
211
|
+
auth/ # Auth utilities
|
|
212
|
+
validations/ # Zod schemas (shared client/server)
|
|
213
|
+
hooks/ # Custom hooks
|
|
214
|
+
types/ # TypeScript types
|
|
215
|
+
utils/ # Pure utility functions
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Rendering Strategy Decision
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
Data changes per user?
|
|
222
|
+
+-- NO --> Data changes rarely?
|
|
223
|
+
| +-- YES --> SSG (build time)
|
|
224
|
+
| +-- NO --> ISR (revalidate: N seconds)
|
|
225
|
+
+-- YES --> Data is time-sensitive?
|
|
226
|
+
+-- YES --> SSR (force-dynamic)
|
|
227
|
+
+-- NO --> ISR + client-side fetching
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## 7. Performance Optimization Checklist
|
|
233
|
+
|
|
234
|
+
### Core Web Vitals Targets
|
|
235
|
+
|
|
236
|
+
| Metric | Target | What It Measures |
|
|
237
|
+
|--------|--------|-----------------|
|
|
238
|
+
| **LCP** | < 2.5s | Largest visible element load time |
|
|
239
|
+
| **INP** | < 200ms | Interaction responsiveness |
|
|
240
|
+
| **CLS** | < 0.1 | Visual stability (layout shifts) |
|
|
241
|
+
|
|
242
|
+
### Pre-Deploy Checklist
|
|
243
|
+
|
|
244
|
+
**Bundle:**
|
|
245
|
+
- [ ] Route-based code splitting (automatic in Next.js)
|
|
246
|
+
- [ ] `dynamic()` import for heavy components (charts, editors, maps)
|
|
247
|
+
- [ ] Tree-shaking: named imports only (`import { debounce } from 'lodash-es'`)
|
|
248
|
+
- [ ] No barrel file re-exports in large libraries
|
|
249
|
+
|
|
250
|
+
**Images:**
|
|
251
|
+
- [ ] `next/image` with `priority` on LCP image
|
|
252
|
+
- [ ] `sizes` attribute set for responsive images
|
|
253
|
+
- [ ] WebP/AVIF format (automatic with next/image)
|
|
254
|
+
|
|
255
|
+
**Fonts:**
|
|
256
|
+
- [ ] `next/font` for zero layout shift font loading
|
|
257
|
+
- [ ] `display: 'swap'` for text visibility during load
|
|
258
|
+
|
|
259
|
+
**Data:**
|
|
260
|
+
- [ ] TanStack Query with appropriate `staleTime` (avoid over-fetching)
|
|
261
|
+
- [ ] Server Components for initial data (zero client JS)
|
|
262
|
+
- [ ] Streaming/Suspense for progressive loading
|
|
263
|
+
|
|
264
|
+
**Rendering:**
|
|
265
|
+
- [ ] Static pages use SSG/ISR (not SSR)
|
|
266
|
+
- [ ] `loading.tsx` for instant navigation feedback
|
|
267
|
+
- [ ] Prefetching enabled on navigation links
|
|
268
|
+
|
|
269
|
+
**Accessibility:**
|
|
270
|
+
- [ ] Semantic HTML first, ARIA only when needed
|
|
271
|
+
- [ ] Keyboard navigation works for all interactive elements
|
|
272
|
+
- [ ] Touch targets minimum 44x44px (WCAG 2.2)
|
|
273
|
+
- [ ] `prefers-reduced-motion` media query respects user preference
|
|
274
|
+
- [ ] Color contrast ratio >= 4.5:1 for normal text
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## 8. API Design Decision
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
Full-stack TypeScript monorepo?
|
|
282
|
+
+-- YES --> tRPC (end-to-end type safety, zero codegen)
|
|
283
|
+
+-- NO --> API is public / multi-language consumers?
|
|
284
|
+
+-- YES --> REST + OpenAPI schema
|
|
285
|
+
+-- NO --> Multiple clients with varied data needs?
|
|
286
|
+
+-- YES --> GraphQL
|
|
287
|
+
+-- NO --> REST (simplest)
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
**SINAPSE default:** tRPC for internal SaaS, REST for public APIs.
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## 9. Cross-References
|
|
295
|
+
|
|
296
|
+
- Infrastructure scaling: see `infrastructure-decision-framework.md`
|
|
297
|
+
- Database patterns: see `database-scaling-patterns.md`
|
|
298
|
+
- Security pre-deploy: see `security-pre-deploy-checklist.md`
|
|
299
|
+
- Environment config: see `environment-deployment-patterns.md`
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# Token Economy Guide
|
|
2
|
+
|
|
3
|
+
> Practical strategies for managing Claude Code context window efficiently.
|
|
4
|
+
> Based on SINAPSE research-02 (token economy) findings.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## When to Compact
|
|
9
|
+
|
|
10
|
+
| Trigger | Default | Recommended |
|
|
11
|
+
|---------|---------|-------------|
|
|
12
|
+
| Auto-compact threshold | 83% context usage | 60% context usage |
|
|
13
|
+
| Manual `/compact` | User-initiated | At every agent switch, after large file reads |
|
|
14
|
+
| Pre-agent-switch | Not automatic | Use handoff protocol (~379 tokens vs ~3-5K) |
|
|
15
|
+
|
|
16
|
+
**Why 60%?** At 83% the model is already losing coherence on early context. Compacting at 60% preserves decision quality and avoids "context amnesia" on key instructions.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## What Survives Compaction
|
|
21
|
+
|
|
22
|
+
| Component | Survives? | Notes |
|
|
23
|
+
|-----------|-----------|-------|
|
|
24
|
+
| CLAUDE.md (project + global) | YES | Always re-injected |
|
|
25
|
+
| Active rules (`.claude/rules/`) | YES | Path-filtered rules re-evaluated |
|
|
26
|
+
| Tool definitions (Tier 1) | YES | Native tools always available |
|
|
27
|
+
| Current file contents | NO | Must re-read after compact |
|
|
28
|
+
| Conversation history | PARTIAL | Summarized, not verbatim |
|
|
29
|
+
| Agent persona | NO | Must re-activate agent |
|
|
30
|
+
| Handoff artifacts | YES | Stored in `.sinapse/handoffs/` |
|
|
31
|
+
| PreCompact hook digest | YES | `precompact-wrapper.cjs` saves session state |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Token Cost per Component
|
|
36
|
+
|
|
37
|
+
### Fixed Costs (every session)
|
|
38
|
+
|
|
39
|
+
| Component | Approx. Tokens | Notes |
|
|
40
|
+
|-----------|---------------|-------|
|
|
41
|
+
| Global CLAUDE.md | ~890 | `~/.claude/CLAUDE.md` |
|
|
42
|
+
| Project CLAUDE.md | ~1,800 | `.claude/CLAUDE.md` |
|
|
43
|
+
| Each rule file | 500-2,000 | `.claude/rules/*.md` |
|
|
44
|
+
| Total rules (12 files) | ~12,000 | Loaded on session start |
|
|
45
|
+
| System prompt overhead | ~2,000 | Claude Code harness |
|
|
46
|
+
| **Baseline per session** | **~17,000** | Before any work begins |
|
|
47
|
+
|
|
48
|
+
### Variable Costs
|
|
49
|
+
|
|
50
|
+
| Component | Approx. Tokens | Notes |
|
|
51
|
+
|-----------|---------------|-------|
|
|
52
|
+
| Agent persona activation | ~800 | Full agent profile |
|
|
53
|
+
| Agent handoff artifact | ~379 | Compacted from ~3-5K |
|
|
54
|
+
| Sub-agent spawn | ~20,000 min | Task tool creates new context |
|
|
55
|
+
| Tool search result | ~500-1,500 | Per deferred tool schema loaded |
|
|
56
|
+
| File read (typical) | ~1,000-5,000 | Depends on file size |
|
|
57
|
+
| Grep/Glob results | ~200-2,000 | Depends on match count |
|
|
58
|
+
| MCP tool definition | ~300-800 | Per tool schema |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Model Routing Table
|
|
63
|
+
|
|
64
|
+
| Task Type | Recommended Model | Rationale |
|
|
65
|
+
|-----------|------------------|-----------|
|
|
66
|
+
| Architecture decisions | Opus | Needs deep reasoning |
|
|
67
|
+
| Code implementation | Opus / Sonnet | Opus for complex, Sonnet for routine |
|
|
68
|
+
| Code review | Sonnet | Pattern matching, fast feedback |
|
|
69
|
+
| Research / analysis | Opus | Multi-source synthesis |
|
|
70
|
+
| Documentation | Sonnet | Structured output, fast |
|
|
71
|
+
| Quick Q&A / lookups | Haiku | Minimal context needed |
|
|
72
|
+
| Sub-agent workers | Haiku / Sonnet | Cost-effective for scoped tasks |
|
|
73
|
+
| Bulk file processing | Haiku | High throughput, low cost |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Optimization Strategies
|
|
78
|
+
|
|
79
|
+
### 1. YAML over JSON for Configuration
|
|
80
|
+
|
|
81
|
+
YAML is 15-30% more token-efficient than JSON for the same data:
|
|
82
|
+
|
|
83
|
+
```yaml
|
|
84
|
+
# YAML: ~45 tokens
|
|
85
|
+
name: feature
|
|
86
|
+
status: active
|
|
87
|
+
tags:
|
|
88
|
+
- ci
|
|
89
|
+
- security
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
```json
|
|
93
|
+
// JSON: ~60 tokens
|
|
94
|
+
{
|
|
95
|
+
"name": "feature",
|
|
96
|
+
"status": "active",
|
|
97
|
+
"tags": ["ci", "security"]
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 2. Path-Filtered Rules
|
|
102
|
+
|
|
103
|
+
Rules with `paths:` frontmatter only load when working on matching files:
|
|
104
|
+
|
|
105
|
+
```yaml
|
|
106
|
+
---
|
|
107
|
+
paths:
|
|
108
|
+
- "packages/db/**"
|
|
109
|
+
- "migrations/**"
|
|
110
|
+
---
|
|
111
|
+
# Database rules (only loaded for DB work)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
This avoids loading ~2K tokens of DB rules when doing frontend work.
|
|
115
|
+
|
|
116
|
+
### 3. Deferred Tool Loading (3-Tier Mesh)
|
|
117
|
+
|
|
118
|
+
| Tier | Loading | Token Impact |
|
|
119
|
+
|------|---------|-------------|
|
|
120
|
+
| Tier 1 (Always) | Session start | ~5K fixed cost |
|
|
121
|
+
| Tier 2 (Deferred) | Agent activation | ~2K per agent |
|
|
122
|
+
| Tier 3 (Deferred) | Tool search | ~500-1.5K on demand |
|
|
123
|
+
|
|
124
|
+
Never load Tier 3 tools speculatively. Use `ToolSearch` only when needed.
|
|
125
|
+
|
|
126
|
+
### 4. Agent Handoff Compaction
|
|
127
|
+
|
|
128
|
+
Each agent switch without handoff protocol wastes ~3-5K tokens. With protocol:
|
|
129
|
+
|
|
130
|
+
| Switches | Without Protocol | With Protocol | Savings |
|
|
131
|
+
|----------|-----------------|---------------|---------|
|
|
132
|
+
| 1 | ~8K | ~5.4K | 33% |
|
|
133
|
+
| 2 | ~12K | ~5.2K | 57% |
|
|
134
|
+
| 3 | ~16K | ~5.6K | 65% |
|
|
135
|
+
|
|
136
|
+
### 5. Batch Tool Calls
|
|
137
|
+
|
|
138
|
+
Independent operations should run in parallel:
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
# Bad: 3 sequential turns (~500 tokens overhead each)
|
|
142
|
+
Read file A → Read file B → Read file C
|
|
143
|
+
|
|
144
|
+
# Good: 1 parallel turn (~500 tokens overhead once)
|
|
145
|
+
Read file A | Read file B | Read file C
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 6. Targeted File Reads
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
# Bad: Read entire 500-line file
|
|
152
|
+
Read(file, offset=0)
|
|
153
|
+
|
|
154
|
+
# Good: Read only the function you need
|
|
155
|
+
Read(file, offset=142, limit=30)
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 7. Limit Search Results
|
|
159
|
+
|
|
160
|
+
Always use `head_limit` on Grep/Glob to avoid flooding context:
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
# Bad: returns 250 matches (default)
|
|
164
|
+
Grep(pattern="TODO")
|
|
165
|
+
|
|
166
|
+
# Good: returns top 10
|
|
167
|
+
Grep(pattern="TODO", head_limit=10)
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Anti-Patterns
|
|
173
|
+
|
|
174
|
+
| Anti-Pattern | Token Waste | Fix |
|
|
175
|
+
|-------------|-------------|-----|
|
|
176
|
+
| Reading same file multiple times | ~2-5K per read | Read once, reference line numbers |
|
|
177
|
+
| Loading all MCP tools eagerly | ~10-20K | Use 3-Tier deferred loading |
|
|
178
|
+
| Full agent persona on every switch | ~3-5K per switch | Use handoff protocol |
|
|
179
|
+
| Unbounded grep results | ~5-10K | Use head_limit |
|
|
180
|
+
| Re-reading files after edit | ~2-5K | Edit tool confirms success |
|
|
181
|
+
| Spawning sub-agents for simple tasks | ~20K minimum | Do inline if <5 tool calls |
|
|
182
|
+
| Not compacting before long tasks | Gradual degradation | Compact at 60% |
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Quick Reference: Context Budget
|
|
187
|
+
|
|
188
|
+
For a 200K token context window:
|
|
189
|
+
|
|
190
|
+
| Allocation | Tokens | % |
|
|
191
|
+
|-----------|--------|---|
|
|
192
|
+
| System + CLAUDE.md + Rules | ~17K | 8.5% |
|
|
193
|
+
| Active agent + tools | ~5K | 2.5% |
|
|
194
|
+
| Working memory (files, results) | ~80K | 40% |
|
|
195
|
+
| Conversation history | ~58K | 29% |
|
|
196
|
+
| Safety buffer (compact at 60%) | ~40K | 20% |
|
|
197
|
+
|
|
198
|
+
**Target:** Keep working memory under 80K by reading only what you need and compacting frequently.
|
|
@@ -16,7 +16,11 @@ const SCAN_CONFIG = [
|
|
|
16
16
|
{ category: 'templates', basePath: '.sinapse-ai/product/templates', glob: '**/*.{yaml,yml,md}', type: 'template' },
|
|
17
17
|
{ category: 'scripts', basePath: '.sinapse-ai/development/scripts', glob: '**/*.{js,mjs}', type: 'script' },
|
|
18
18
|
{ category: 'modules', basePath: '.sinapse-ai/core', glob: '**/*.{js,mjs}', type: 'module' },
|
|
19
|
-
|
|
19
|
+
// Story A.4: restrict to top-level *.md so agent MEMORY.md files under
|
|
20
|
+
// agents/{name}/MEMORY.md are NOT indexed as agents (they are memory, not
|
|
21
|
+
// persona definitions). Without this restriction, `extractEntityId`
|
|
22
|
+
// collapses every MEMORY.md to a single agent entry named "MEMORY".
|
|
23
|
+
{ category: 'agents', basePath: '.sinapse-ai/development/agents', glob: '*.md', type: 'agent' },
|
|
20
24
|
{ category: 'checklists', basePath: '.sinapse-ai/development/checklists', glob: '**/*.md', type: 'checklist' },
|
|
21
25
|
{ category: 'data', basePath: '.sinapse-ai/data', glob: '**/*.{yaml,yml,md}', type: 'data' },
|
|
22
26
|
{ category: 'workflows', basePath: '.sinapse-ai/development/workflows', glob: '**/*.{yaml,yml}', type: 'workflow' },
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: captcha-handler
|
|
3
|
+
description: Handle CAPTCHAs encountered during browser automation
|
|
4
|
+
trigger: When Chrome Brain or Playwright hits a CAPTCHA challenge
|
|
5
|
+
agents: [developer, analyst]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# CAPTCHA Handler Skill
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
Invoke with `*captcha-handler` or `/captcha-handler` when browser automation is blocked by a CAPTCHA.
|
|
13
|
+
|
|
14
|
+
## Detection
|
|
15
|
+
|
|
16
|
+
Identify the CAPTCHA type from the page:
|
|
17
|
+
|
|
18
|
+
| Type | Detection Signal |
|
|
19
|
+
|------|-----------------|
|
|
20
|
+
| reCAPTCHA v2 | `iframe[src*="recaptcha"]`, `.g-recaptcha` |
|
|
21
|
+
| reCAPTCHA v3 | `grecaptcha.execute` in page scripts |
|
|
22
|
+
| Cloudflare Turnstile | `iframe[src*="challenges.cloudflare.com"]`, `.cf-turnstile` |
|
|
23
|
+
| hCaptcha | `iframe[src*="hcaptcha.com"]`, `.h-captcha` |
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Quick detection via page source
|
|
27
|
+
grep -i "recaptcha\|turnstile\|hcaptcha\|captcha" /tmp/page-source.html
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Strategies (ordered by preference)
|
|
31
|
+
|
|
32
|
+
### Strategy 1: Avoidance (PREFERRED)
|
|
33
|
+
Prevent CAPTCHA from triggering in the first place:
|
|
34
|
+
- Use `puppeteer-extra-plugin-stealth` for headless sessions
|
|
35
|
+
- Rotate User-Agent strings to match real browsers
|
|
36
|
+
- Add realistic delays between actions (500-2000ms)
|
|
37
|
+
- Avoid rapid-fire requests to the same domain
|
|
38
|
+
- Set viewport to common resolution (1920x1080)
|
|
39
|
+
- Enable JavaScript and cookies
|
|
40
|
+
|
|
41
|
+
### Strategy 2: Manual Solve (FALLBACK)
|
|
42
|
+
When avoidance fails, notify user to solve manually:
|
|
43
|
+
1. Take screenshot of the CAPTCHA page
|
|
44
|
+
2. Display: "CAPTCHA detected ({type}). Please solve it in the browser window."
|
|
45
|
+
3. Wait for page navigation or CAPTCHA element removal (poll every 2s, timeout 120s)
|
|
46
|
+
4. Resume automation after solve confirmed
|
|
47
|
+
|
|
48
|
+
### Strategy 3: API Solve (OPTIONAL)
|
|
49
|
+
If `CAPTCHA_API_KEY` environment variable is set (2captcha.com):
|
|
50
|
+
1. Extract sitekey from CAPTCHA element
|
|
51
|
+
2. Submit to 2captcha API with page URL and sitekey
|
|
52
|
+
3. Poll for solution (max 60s)
|
|
53
|
+
4. Inject solution token into page
|
|
54
|
+
5. Submit form
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Check if API is configured
|
|
58
|
+
echo $CAPTCHA_API_KEY | head -c 4
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Only use Strategy 3 when:**
|
|
62
|
+
- User has explicitly configured the API key
|
|
63
|
+
- Strategy 1 and 2 are impractical (batch automation)
|
|
64
|
+
- User consents to per-solve costs
|
|
65
|
+
|
|
66
|
+
## Output
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
## CAPTCHA Handler Report
|
|
70
|
+
- Type: {captcha_type}
|
|
71
|
+
- Strategy Used: {avoidance|manual|api}
|
|
72
|
+
- Result: {SOLVED|TIMEOUT|FAILED}
|
|
73
|
+
- Time: {seconds}s
|
|
74
|
+
- Recommendation: {next steps if failed}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Rules
|
|
78
|
+
- ALWAYS prefer avoidance over solving
|
|
79
|
+
- NEVER store or log CAPTCHA API keys
|
|
80
|
+
- Timeout after 120s for manual solve, 60s for API solve
|
|
81
|
+
- If all strategies fail, document the blocker and suggest alternative approach (API instead of scraping)
|
|
82
|
+
- Respect website ToS — CAPTCHAs exist for a reason
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: chrome-brain
|
|
3
|
+
description: Intelligent browser automation with persistent sessions, memory, and auto-learning
|
|
4
|
+
trigger: When any agent needs to browse, scrape, test UI, or interact with web services
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Chrome Brain — Intelligent Browser Skill
|
|
8
|
+
|
|
9
|
+
## Connection Architecture
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Priority 1: --autoConnect (user's real Chrome, all sessions preserved)
|
|
13
|
+
Priority 2: --browserUrl (persistent debug profile, seeded from user's Chrome)
|
|
14
|
+
Priority 3: Launch fresh Chrome (last resort)
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**Setup (one-time):** Open Chrome → `chrome://inspect/#remote-debugging` → Enable toggle.
|
|
18
|
+
|
|
19
|
+
## Available Tools (29 via chrome-devtools MCP)
|
|
20
|
+
|
|
21
|
+
| Category | Tools | Use When |
|
|
22
|
+
|----------|-------|----------|
|
|
23
|
+
| Navigation | navigate_page, new_page, close_page, list_pages, select_page | Open/switch pages |
|
|
24
|
+
| Interaction | click, fill, fill_form, type_text, press_key, hover, drag, upload_file | Interact with UI |
|
|
25
|
+
| Capture | take_screenshot, take_snapshot, take_memory_snapshot | Visual verification |
|
|
26
|
+
| Scripting | evaluate_script | Extract data, manipulate DOM |
|
|
27
|
+
| Monitoring | list_console_messages, list_network_requests, get_network_request | Debug, intercept |
|
|
28
|
+
| Performance | performance_start_trace, performance_stop_trace, lighthouse_audit | Performance testing |
|
|
29
|
+
| Dialog | handle_dialog, wait_for | Handle alerts, wait for elements |
|
|
30
|
+
| Device | emulate, resize_page | Test responsive, mobile |
|
|
31
|
+
|
|
32
|
+
## CAPTCHA Protocol
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
1. DETECT: Check for CAPTCHA indicators (iframe[src*=recaptcha], .cf-turnstile, .h-captcha)
|
|
36
|
+
2. AVOID FIRST:
|
|
37
|
+
- autoConnect = user's real Chrome = already authenticated = rare CAPTCHAs
|
|
38
|
+
- --disable-blink-features=AutomationControlled (stealth mode active)
|
|
39
|
+
- Human-like delays between actions (200-500ms)
|
|
40
|
+
3. IF CAPTCHA APPEARS:
|
|
41
|
+
a. Simple checkbox: try click() — sometimes works with real Chrome profile
|
|
42
|
+
b. Visual challenge: take_screenshot → notify user "CAPTCHA detected, please solve"
|
|
43
|
+
c. Cloudflare Turnstile: usually auto-passes with real Chrome profile
|
|
44
|
+
4. NEVER: Use CAPTCHA-solving services without explicit user authorization
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Auto-Learning Protocol
|
|
48
|
+
|
|
49
|
+
After every browsing session, extract and store:
|
|
50
|
+
|
|
51
|
+
```yaml
|
|
52
|
+
# ~/.chrome-brain/memory.jsonl (appended automatically by PostToolUse hook)
|
|
53
|
+
session_log:
|
|
54
|
+
urls_visited: []
|
|
55
|
+
data_extracted: {}
|
|
56
|
+
errors_encountered: []
|
|
57
|
+
patterns_discovered: []
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Best Practices
|
|
61
|
+
|
|
62
|
+
1. **Screenshots budget:** Max 12 per session (warning at 12, critical at 15)
|
|
63
|
+
2. **Always take_screenshot after navigation** to verify page loaded correctly
|
|
64
|
+
3. **Use evaluate_script for data extraction** (faster than multiple clicks)
|
|
65
|
+
4. **Check console messages** for JavaScript errors before interacting
|
|
66
|
+
5. **Use wait_for** before clicking elements that load asynchronously
|
|
67
|
+
6. **Prefer fill_form** over individual fill() calls for multi-field forms
|
|
68
|
+
7. **Use emulate** to test mobile layouts before desktop
|
|
69
|
+
|
|
70
|
+
## Session Persistence
|
|
71
|
+
|
|
72
|
+
- Cookies, localStorage, and sessions persist between uses (autoConnect)
|
|
73
|
+
- No need to re-login to services between sessions
|
|
74
|
+
- If session expires, user logs in once in their normal Chrome — done
|
|
75
|
+
|
|
76
|
+
## Security Notes
|
|
77
|
+
|
|
78
|
+
- autoConnect exposes all user cookies/tokens to the MCP client
|
|
79
|
+
- Never navigate to untrusted URLs in authenticated sessions
|
|
80
|
+
- Prefer using a dedicated tab for automation work
|
|
81
|
+
- Close sensitive tabs before running automated browsing tasks
|