iron-edge 1.2.0 → 2.0.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 -0
- package/README.md +114 -25
- package/agents/iron-3d.md +1 -1
- package/agents/iron-animations.md +3 -2
- package/agents/iron-auditor.md +175 -0
- package/agents/iron-brand.md +3 -2
- package/agents/iron-ceo.md +143 -0
- package/agents/iron-claude.md +54 -0
- package/agents/iron-clone.md +87 -0
- package/agents/iron-cloning.md +21 -3
- package/agents/iron-commercial.md +3 -2
- package/agents/iron-community.md +1 -1
- package/agents/iron-content.md +3 -2
- package/agents/iron-copy.md +3 -2
- package/agents/iron-council.md +3 -2
- package/agents/iron-courses.md +3 -2
- package/agents/iron-cyber.md +3 -2
- package/agents/iron-design.md +3 -2
- package/agents/iron-eng.md +138 -0
- package/agents/iron-finance.md +3 -2
- package/agents/iron-forge.md +147 -0
- package/agents/iron-growth.md +3 -2
- package/agents/iron-install.md +15 -13
- package/agents/iron-paidmedia.md +3 -2
- package/agents/iron-premium.md +146 -0
- package/agents/iron-product.md +3 -2
- package/agents/iron-research.md +3 -2
- package/agents/iron-search.md +82 -0
- package/agents/iron-shopify.md +80 -4
- package/agents/iron-spy.md +1 -1
- package/agents/iron-storytelling.md +3 -2
- package/agents/iron-video.md +1 -1
- package/agents/lp-cinematico.md +2 -2
- package/agents/xq-advisory.md +1 -1
- package/agents/xq-brand.md +1 -1
- package/agents/xq-clevel.md +1 -1
- package/agents/xq-codecore.md +19 -19
- package/agents/xq-copy.md +1 -1
- package/agents/xq-copymaster.md +1 -1
- package/agents/xq-cyber.md +1 -1
- package/agents/xq-data.md +1 -1
- package/agents/xq-design.md +1 -1
- package/agents/xq-hormozi.md +2 -2
- package/agents/xq-movement.md +1 -1
- package/agents/xq-storytelling.md +1 -1
- package/agents/xq-traffic.md +1 -1
- package/bin/iron-edge.js +74 -0
- package/docs/2026-08-21-como-pedir-software-ao-iron.md +62 -0
- package/docs/2026-08-21-skill-gate-fonte-unica.md +70 -0
- package/installer/install-mac.sh +52 -0
- package/installer/install-windows.ps1 +65 -0
- package/installer/install.js +518 -0
- package/iron-routing-map.md +276 -0
- package/package.json +14 -7
- package/skills/anotar/SKILL.md +50 -0
- package/skills/brandkit/SKILL.md +152 -0
- package/skills/clone-distill/SKILL.md +45 -0
- package/skills/clone-distill/scripts/distill.mjs +144 -0
- package/skills/clone-inventory/SKILL.md +51 -0
- package/skills/clone-inventory/package-lock.json +307 -0
- package/skills/clone-inventory/package.json +1 -0
- package/skills/clone-inventory/scripts/inventory.mjs +336 -0
- package/skills/clone-organize/SKILL.md +107 -0
- package/skills/clone-organize/package-lock.json +307 -0
- package/skills/clone-organize/package.json +1 -0
- package/skills/clone-organize/scripts/verify-visual.mjs +79 -0
- package/skills/clone-site/SKILL.md +104 -0
- package/skills/clone-site/package-lock.json +360 -0
- package/skills/clone-site/package.json +12 -0
- package/skills/clone-site/reference/lessons.md +131 -0
- package/skills/clone-site/reference/workflow.md +211 -0
- package/skills/clone-site/scripts/capture.mjs +507 -0
- package/skills/clone-site/scripts/clone.sh +166 -0
- package/skills/clone-site/scripts/fix_paths.py +118 -0
- package/skills/clone-site/scripts/serve.py +129 -0
- package/skills/clone-site/scripts/verify.mjs +126 -0
- package/skills/clone-site/scripts/wget_fallback.sh +38 -0
- package/skills/clone-transplant/SKILL.md +50 -0
- package/skills/clone-transplant/scripts/transplant.mjs +299 -0
- package/skills/conectar-mcp/SKILL.md +38 -0
- package/skills/escada/SKILL.md +62 -0
- package/skills/faxina/SKILL.md +34 -0
- package/skills/gate/SKILL.md +318 -0
- package/skills/gate/hooks/gate-dirty.sh +40 -0
- package/skills/gate/hooks/gate-stop.sh +31 -0
- package/skills/gate/preflight.py +132 -0
- package/skills/lp-cinematico/SKILL.md +5 -0
- package/skills/roteiro-video/SKILL.md +5 -0
- package/skills/salvar/SKILL.md +80 -0
- package/squads/squad-animations/README.md +18 -6
- package/squads/squad-animations/agents/animation-interpreter.md +9 -0
- package/squads/squad-animations/agents/animation-performance-engineer.md +9 -0
- package/squads/squad-animations/agents/animations-orqx.md +11 -2
- package/squads/squad-animations/agents/css-motion-artist.md +9 -0
- package/squads/squad-animations/agents/generative-particle-engineer.md +9 -0
- package/squads/squad-animations/agents/motion-choreographer.md +9 -0
- package/squads/squad-animations/agents/scroll-narrative-engineer.md +9 -0
- package/squads/squad-animations/agents/shader-artist.md +9 -0
- package/squads/squad-animations/agents/threejs-architect.md +9 -0
- package/squads/squad-animations/knowledge-base/chrome-brain-integration.md +17 -43
- package/squads/squad-animations/squad.yaml +21 -7
- package/squads/squad-brand/README.md +9 -3
- package/squads/squad-brand/agents/al-ries.md +9 -0
- package/squads/squad-brand/agents/alina-wheeler.md +9 -0
- package/squads/squad-brand/agents/archetype-consultant.md +9 -0
- package/squads/squad-brand/agents/brand-archetype-strategist.md +9 -0
- package/squads/squad-brand/agents/brand-auditor.md +9 -0
- package/squads/squad-brand/agents/brand-collateral-designer.md +9 -0
- package/squads/squad-brand/agents/brand-compiler.md +9 -0
- package/squads/squad-brand/agents/brand-creative-engineer.md +9 -0
- package/squads/squad-brand/agents/brand-culture-architect.md +9 -0
- package/squads/squad-brand/agents/brand-growth-strategist.md +9 -0
- package/squads/squad-brand/agents/brand-identity-designer.md +9 -0
- package/squads/squad-brand/agents/brand-motion-vfx.md +9 -0
- package/squads/squad-brand/agents/brand-naming-specialist.md +9 -0
- package/squads/squad-brand/agents/brand-orqx.md +12 -3
- package/squads/squad-brand/agents/brand-positioning-strategist.md +9 -0
- package/squads/squad-brand/agents/brand-sonic-designer.md +9 -0
- package/squads/squad-brand/agents/brand-strategist.md +9 -0
- package/squads/squad-brand/agents/brand-system-architect.md +9 -0
- package/squads/squad-brand/agents/byron-sharp.md +9 -0
- package/squads/squad-brand/agents/david-aaker.md +9 -0
- package/squads/squad-brand/agents/denise-yohn.md +9 -0
- package/squads/squad-brand/agents/domain-scout.md +9 -0
- package/squads/squad-brand/agents/donald-miller.md +9 -0
- package/squads/squad-brand/agents/emily-heyward.md +9 -0
- package/squads/squad-brand/agents/jean-noel-kapferer.md +9 -0
- package/squads/squad-brand/agents/kevin-keller.md +9 -0
- package/squads/squad-brand/agents/marty-neumeier.md +9 -0
- package/squads/squad-brand/agents/miller-sticky-brand.md +9 -0
- package/squads/squad-brand/agents/naming-strategist.md +9 -0
- package/squads/squad-brand/knowledge-base/chrome-brain-integration.md +17 -35
- package/squads/squad-brand/squad.yaml +43 -10
- package/squads/squad-brand/tasks/create-components.md +1 -1
- package/squads/squad-brand/tasks/create-dark-mode.md +1 -1
- package/squads/squad-brand/tasks/create-token-system.md +1 -1
- package/squads/squad-brand/tasks/define-grid-system.md +1 -1
- package/squads/squad-brand/tasks/design-dynamic-identity-system.md +1 -1
- package/squads/squad-brand/tasks/export-tokens.md +1 -1
- package/squads/squad-brand/templates/client-delivery-template.md +1 -1
- package/squads/squad-claude/README.md +19 -7
- package/squads/squad-claude/agents/claude-orqx.md +13 -4
- package/squads/squad-claude/agents/config-engineer.md +9 -0
- package/squads/squad-claude/agents/hooks-architect.md +9 -0
- package/squads/squad-claude/agents/mcp-integrator.md +9 -0
- package/squads/squad-claude/agents/project-integrator.md +9 -0
- package/squads/squad-claude/agents/roadmap-sentinel.md +9 -0
- package/squads/squad-claude/agents/skill-craftsman.md +9 -0
- package/squads/squad-claude/agents/swarm-orqx.md +9 -0
- package/squads/squad-claude/checklists/agent-readiness-checklist.md +1 -2
- package/squads/squad-claude/checklists/claude-setup-audit-checklist.md +1 -1
- package/squads/squad-claude/checklists/prompt-quality-checklist.md +0 -5
- package/squads/squad-claude/knowledge-base/chrome-brain-integration.md +17 -42
- package/squads/squad-claude/knowledge-base/claude-code-configuration-reference.md +6 -11
- package/squads/squad-claude/knowledge-base/claude-code-hooks-reference.md +28 -19
- package/squads/squad-claude/knowledge-base/claude-code-internals-deep.md +16 -2
- package/squads/squad-claude/knowledge-base/claude-code-tools-reference.md +2 -2
- package/squads/squad-claude/knowledge-base/context-window-optimization.md +3 -3
- package/squads/squad-claude/knowledge-base/knowledge-architecture-reference.md +3 -3
- package/squads/squad-claude/knowledge-base/mcp-integration-patterns.md +1 -1
- package/squads/squad-claude/knowledge-base/memory-systems-reference.md +6 -6
- package/squads/squad-claude/knowledge-base/obsidian-claude-integration.md +5 -5
- package/squads/squad-claude/knowledge-base/retrieval-augmented-generation.md +3 -3
- package/squads/squad-claude/knowledge-base/skill-creation-patterns.md +10 -10
- package/squads/squad-claude/knowledge-base/swarm-orchestration-patterns.md +10 -10
- package/squads/squad-claude/squad.yaml +20 -7
- package/squads/squad-claude/templates/agent-definition-template.md +1 -1
- package/squads/squad-cloning/README.md +22 -6
- package/squads/squad-cloning/agents/agent-forger.md +36 -3
- package/squads/squad-cloning/agents/cloning-orqx.md +39 -4
- package/squads/squad-cloning/agents/cognitive-extractor.md +33 -0
- package/squads/squad-cloning/agents/content-capturer.md +33 -0
- package/squads/squad-cloning/agents/kb-architect.md +33 -0
- package/squads/squad-cloning/agents/mind-synthesizer.md +33 -0
- package/squads/squad-cloning/agents/source-hunter.md +33 -0
- package/squads/squad-cloning/agents/squad-assembler.md +35 -2
- package/squads/squad-cloning/checklists/clone-completeness-checklist.md +1 -1
- package/squads/squad-cloning/checklists/pre-deploy-checklist.md +3 -3
- package/squads/squad-cloning/knowledge-base/agent-generation-guide.md +4 -4
- package/squads/squad-cloning/knowledge-base/chrome-brain-integration.md +17 -43
- package/squads/squad-cloning/knowledge-base/clone-tier-standards.md +1 -1
- package/squads/squad-cloning/knowledge-base/cross-squad-deployment.md +2 -2
- package/squads/squad-cloning/knowledge-base/ethical-guidelines.md +2 -2
- package/squads/squad-cloning/knowledge-base/multi-agent-deployment-patterns.md +1 -1
- package/squads/squad-cloning/knowledge-base/skill-standard-for-clones.md +5 -5
- package/squads/squad-cloning/squad.yaml +32 -11
- package/squads/squad-cloning/tasks/assign-content-class.md +33 -23
- package/squads/squad-cloning/tasks/build-cognitive-profile.md +38 -23
- package/squads/squad-cloning/tasks/calculate-confidence-score.md +36 -23
- package/squads/squad-cloning/tasks/capture-article-text.md +53 -23
- package/squads/squad-cloning/tasks/capture-social-posts.md +50 -23
- package/squads/squad-cloning/tasks/compile-source-catalog.md +37 -23
- package/squads/squad-cloning/tasks/cross-reference-kbs.md +67 -23
- package/squads/squad-cloning/tasks/deploy-cross-squad-kbs.md +43 -28
- package/squads/squad-cloning/tasks/design-kb-taxonomy.md +70 -23
- package/squads/squad-cloning/tasks/determine-clone-tier.md +45 -23
- package/squads/squad-cloning/tasks/discover-articles-interviews.md +36 -23
- package/squads/squad-cloning/tasks/discover-books-publications.md +36 -23
- package/squads/squad-cloning/tasks/discover-podcasts-appearances.md +36 -23
- package/squads/squad-cloning/tasks/discover-social-media-content.md +36 -23
- package/squads/squad-cloning/tasks/discover-youtube-channels.md +37 -23
- package/squads/squad-cloning/tasks/escalate-quality-issues.md +40 -23
- package/squads/squad-cloning/tasks/estimate-content-volume.md +37 -23
- package/squads/squad-cloning/tasks/extract-book-content.md +53 -23
- package/squads/squad-cloning/tasks/extract-decision-patterns.md +33 -23
- package/squads/squad-cloning/tasks/extract-heuristics.md +33 -23
- package/squads/squad-cloning/tasks/extract-mental-models.md +33 -23
- package/squads/squad-cloning/tasks/extract-vocabulary-tone.md +29 -23
- package/squads/squad-cloning/tasks/extract-workflows-processes.md +34 -23
- package/squads/squad-cloning/tasks/finalize-clone-delivery.md +37 -23
- package/squads/squad-cloning/tasks/generate-agent-commands.md +48 -23
- package/squads/squad-cloning/tasks/generate-agent-heuristics.md +44 -23
- package/squads/squad-cloning/tasks/generate-agent-persona.md +53 -23
- package/squads/squad-cloning/tasks/generate-agent-protocols.md +45 -23
- package/squads/squad-cloning/tasks/generate-checklist-files.md +43 -28
- package/squads/squad-cloning/tasks/generate-cross-squad-handoffs.md +53 -23
- package/squads/squad-cloning/tasks/generate-extraction-report.md +30 -23
- package/squads/squad-cloning/tasks/generate-framework-kbs.md +68 -23
- package/squads/squad-cloning/tasks/generate-methodology-kbs.md +68 -23
- package/squads/squad-cloning/tasks/generate-mind-map.md +36 -23
- package/squads/squad-cloning/tasks/generate-pattern-kbs.md +66 -23
- package/squads/squad-cloning/tasks/generate-reference-kbs.md +67 -23
- package/squads/squad-cloning/tasks/generate-squad-yaml.md +39 -27
- package/squads/squad-cloning/tasks/generate-task-files.md +45 -28
- package/squads/squad-cloning/tasks/generate-template-files.md +39 -28
- package/squads/squad-cloning/tasks/generate-workflow-files.md +44 -28
- package/squads/squad-cloning/tasks/identify-contradictions.md +32 -23
- package/squads/squad-cloning/tasks/identify-meta-patterns.md +42 -23
- package/squads/squad-cloning/tasks/initiate-clone-project.md +40 -23
- package/squads/squad-cloning/tasks/monitor-pipeline-progress.md +33 -23
- package/squads/squad-cloning/tasks/normalize-raw-content.md +43 -23
- package/squads/squad-cloning/tasks/package-squad-output.md +39 -28
- package/squads/squad-cloning/tasks/resolve-contradictions.md +47 -23
- package/squads/squad-cloning/tasks/run-pre-publish-checklist.md +39 -27
- package/squads/squad-cloning/tasks/tag-confidence-levels.md +30 -23
- package/squads/squad-cloning/tasks/transcribe-podcast-episodes.md +56 -23
- package/squads/squad-cloning/tasks/transcribe-youtube-videos.md +54 -23
- package/squads/squad-cloning/tasks/validate-agent-completeness.md +47 -23
- package/squads/squad-cloning/tasks/validate-kb-citations.md +62 -23
- package/squads/squad-cloning/tasks/validate-transcription-quality.md +39 -23
- package/squads/squad-cloning/workflows/full-clone-pipeline.yaml +17 -1
- package/squads/squad-cloning/workflows/tier2-consultant.yaml +1 -1
- package/squads/squad-commercial/README.md +18 -6
- package/squads/squad-commercial/agents/commercial-orqx.md +11 -2
- package/squads/squad-commercial/agents/cs-business-auditor.md +12 -3
- package/squads/squad-commercial/agents/cs-client-success.md +12 -3
- package/squads/squad-commercial/agents/cs-crm-specialist.md +12 -3
- package/squads/squad-commercial/agents/cs-funnel-architect.md +12 -3
- package/squads/squad-commercial/agents/cs-lead-generation-strategist.md +12 -3
- package/squads/squad-commercial/agents/cs-offer-designer.md +12 -3
- package/squads/squad-commercial/agents/cs-revops-analyst.md +12 -3
- package/squads/squad-commercial/agents/cs-sales-closer.md +12 -3
- package/squads/squad-commercial/agents/cs-sales-enablement.md +12 -3
- package/squads/squad-commercial/agents/legal-chief.md +19 -189
- package/squads/squad-commercial/knowledge-base/chrome-brain-integration.md +17 -34
- package/squads/squad-commercial/knowledge-base/prospecting-pipeline-generation.md +1 -1
- package/squads/squad-commercial/knowledge-base/sales-revenue-master-reference.md +2 -2
- package/squads/squad-commercial/squad.yaml +25 -16
- package/squads/squad-commercial/tasks/build-nurture-sequences.md +1 -1
- package/squads/squad-commercial/tasks/coordinate-revenue-cycle.md +5 -5
- package/squads/squad-commercial/tasks/define-icp-profile.md +1 -1
- package/squads/squad-commercial/tasks/design-advocacy-program.md +1 -1
- package/squads/squad-commercial/tasks/design-lead-magnet.md +1 -1
- package/squads/squad-commercial/tasks/design-lead-magnets.md +2 -2
- package/squads/squad-commercial/tasks/manage-commercial-handoffs.md +5 -5
- package/squads/squad-commercial/tasks/map-content-to-funnel.md +4 -4
- package/squads/squad-commercial/tasks/run-productization-sprint.md +2 -2
- package/squads/squad-content/README.md +18 -6
- package/squads/squad-content/agents/content-analyst.md +9 -0
- package/squads/squad-content/agents/content-engineer.md +10 -1
- package/squads/squad-content/agents/content-governor.md +10 -1
- package/squads/squad-content/agents/content-orqx.md +13 -4
- package/squads/squad-content/agents/editorial-strategist.md +11 -2
- package/squads/squad-content/agents/platform-specialist.md +14 -5
- package/squads/squad-content/agents/signal-intelligence.md +9 -0
- package/squads/squad-content/checklists/onboarding-setup-checklist.md +2 -2
- package/squads/squad-content/knowledge-base/chrome-brain-integration.md +17 -38
- package/squads/squad-content/knowledge-base/content-strategy-master-reference.md +1 -1
- package/squads/squad-content/knowledge-base/cross-squad-integration-protocol.md +24 -24
- package/squads/squad-content/knowledge-base/social-algorithms-master-reference.md +1 -1
- package/squads/squad-content/squad.yaml +22 -11
- package/squads/squad-content/tasks/check-brand-consistency.md +2 -2
- package/squads/squad-content/tasks/coordinate-cross-squad.md +2 -2
- package/squads/squad-content/tasks/define-big-idea.md +2 -2
- package/squads/squad-content/tasks/define-content-standards.md +1 -1
- package/squads/squad-content/tasks/define-editorial-pillars.md +1 -1
- package/squads/squad-content/tasks/integrate-brand-visual-assets.md +3 -3
- package/squads/squad-content/tasks/update-content-preferences.md +1 -1
- package/squads/squad-content/workflows/onboarding-content-cycle.yaml +1 -1
- package/squads/squad-copy/README.md +18 -6
- package/squads/squad-copy/agents/ad-copywriter.md +13 -4
- package/squads/squad-copy/agents/andre-chaperon.md +9 -0
- package/squads/squad-copy/agents/ben-settle.md +9 -0
- package/squads/squad-copy/agents/brand-voice-writer.md +14 -5
- package/squads/squad-copy/agents/claude-hopkins.md +9 -0
- package/squads/squad-copy/agents/clayton-makepeace.md +9 -0
- package/squads/squad-copy/agents/conversion-writer.md +13 -4
- package/squads/squad-copy/agents/copy-chief.md +24 -152
- package/squads/squad-copy/agents/copy-editor.md +11 -2
- package/squads/squad-copy/agents/copy-orqx.md +10 -1
- package/squads/squad-copy/agents/copy-strategist.md +16 -7
- package/squads/squad-copy/agents/dan-kennedy.md +9 -0
- package/squads/squad-copy/agents/dan-koe.md +9 -0
- package/squads/squad-copy/agents/david-deutsch.md +9 -0
- package/squads/squad-copy/agents/david-ogilvy.md +9 -0
- package/squads/squad-copy/agents/direct-response-writer.md +13 -4
- package/squads/squad-copy/agents/email-sequence-strategist.md +13 -4
- package/squads/squad-copy/agents/eugene-schwartz.md +9 -0
- package/squads/squad-copy/agents/frank-kern.md +9 -0
- package/squads/squad-copy/agents/funnel-copywriter.md +13 -4
- package/squads/squad-copy/agents/gary-bencivenga.md +9 -0
- package/squads/squad-copy/agents/gary-halbert.md +9 -0
- package/squads/squad-copy/agents/headline-specialist.md +10 -1
- package/squads/squad-copy/agents/jim-rutz.md +9 -0
- package/squads/squad-copy/agents/joe-sugarman.md +9 -0
- package/squads/squad-copy/agents/john-carlton.md +9 -0
- package/squads/squad-copy/agents/jon-benson.md +9 -0
- package/squads/squad-copy/agents/long-form-writer.md +13 -4
- package/squads/squad-copy/agents/parris-lampropoulos.md +9 -0
- package/squads/squad-copy/agents/persuasion-psychologist.md +12 -3
- package/squads/squad-copy/agents/proof-architect.md +13 -4
- package/squads/squad-copy/agents/robert-collier.md +9 -0
- package/squads/squad-copy/agents/russell-brunson.md +9 -0
- package/squads/squad-copy/agents/ry-schwartz.md +9 -0
- package/squads/squad-copy/agents/stefan-georgi.md +9 -0
- package/squads/squad-copy/agents/todd-brown.md +9 -0
- package/squads/squad-copy/knowledge-base/chrome-brain-integration.md +17 -37
- package/squads/squad-copy/squad.yaml +49 -16
- package/squads/squad-copy/tasks/align-copy-strategy-with-brand.md +6 -6
- package/squads/squad-copy/tasks/approve-copy-for-release.md +1 -1
- package/squads/squad-copy/tasks/build-headline-swipe-file.md +1 -1
- package/squads/squad-copy/tasks/build-message-hierarchy.md +2 -2
- package/squads/squad-copy/tasks/conduct-copy-audit.md +1 -1
- package/squads/squad-copy/tasks/coordinate-multi-channel-copy.md +1 -1
- package/squads/squad-copy/tasks/craft-social-media-hooks.md +1 -1
- package/squads/squad-copy/tasks/create-brand-manifesto.md +1 -1
- package/squads/squad-copy/tasks/create-case-study-framework.md +3 -3
- package/squads/squad-copy/tasks/create-copy-brief.md +3 -3
- package/squads/squad-copy/tasks/create-ugc-script.md +3 -3
- package/squads/squad-copy/tasks/define-market-awareness-level.md +1 -1
- package/squads/squad-copy/tasks/design-headline-ab-tests.md +2 -2
- package/squads/squad-copy/tasks/develop-brand-voice.md +1 -1
- package/squads/squad-copy/tasks/map-objection-landscape.md +2 -2
- package/squads/squad-copy/tasks/optimize-email-engagement.md +2 -2
- package/squads/squad-copy/tasks/optimize-funnel-conversion-copy.md +3 -3
- package/squads/squad-copy/tasks/plan-multi-channel-copy.md +1 -1
- package/squads/squad-copy/tasks/write-ad-copy-variations.md +2 -2
- package/squads/squad-copy/tasks/write-funnel-copy-sequence.md +1 -1
- package/squads/squad-copy/tasks/write-video-podcast-titles.md +1 -1
- package/squads/squad-copy/workflows/brand-voice-development.yaml +1 -1
- package/squads/squad-council/README.md +18 -6
- package/squads/squad-council/agents/brene-brown.md +9 -0
- package/squads/squad-council/agents/charlie-munger.md +9 -0
- package/squads/squad-council/agents/council-orqx.md +12 -3
- package/squads/squad-council/agents/derek-sivers.md +9 -0
- package/squads/squad-council/agents/naval-ravikant.md +9 -0
- package/squads/squad-council/agents/patrick-lencioni.md +9 -0
- package/squads/squad-council/agents/peter-thiel.md +9 -0
- package/squads/squad-council/agents/ray-dalio.md +9 -0
- package/squads/squad-council/agents/reid-hoffman.md +9 -0
- package/squads/squad-council/agents/simon-sinek.md +9 -0
- package/squads/squad-council/agents/yvon-chouinard.md +9 -0
- package/squads/squad-council/knowledge-base/brand-strategy-models.md +2 -2
- package/squads/squad-council/knowledge-base/innovation-disruption-frameworks.md +1 -1
- package/squads/squad-council/knowledge-base/market-analysis-frameworks.md +1 -1
- package/squads/squad-council/squad.yaml +25 -20
- package/squads/squad-courses/README.md +18 -6
- package/squads/squad-courses/agents/assessment-creator.md +9 -0
- package/squads/squad-courses/agents/content-writer.md +9 -0
- package/squads/squad-courses/agents/courses-orqx.md +11 -2
- package/squads/squad-courses/agents/curriculum-designer.md +9 -0
- package/squads/squad-courses/agents/launch-strategist.md +9 -0
- package/squads/squad-courses/agents/lesson-architect.md +9 -0
- package/squads/squad-courses/agents/production-director.md +9 -0
- package/squads/squad-courses/agents/slide-designer.md +9 -0
- package/squads/squad-courses/knowledge-base/domain-advocacia-curriculum.md +1 -1
- package/squads/squad-courses/knowledge-base/domain-contabilidade-curriculum.md +1 -1
- package/squads/squad-courses/squad.yaml +21 -10
- package/squads/squad-courses/tasks/adapt-content-for-level.md +30 -22
- package/squads/squad-courses/tasks/adapt-slides-for-format.md +41 -23
- package/squads/squad-courses/tasks/create-bonus-strategy.md +34 -17
- package/squads/squad-courses/tasks/create-final-project-brief.md +48 -22
- package/squads/squad-courses/tasks/create-lesson-outline.md +34 -22
- package/squads/squad-courses/tasks/create-presentation-outline.md +40 -23
- package/squads/squad-courses/tasks/create-production-checklist.md +43 -28
- package/squads/squad-courses/tasks/create-progress-milestones.md +40 -22
- package/squads/squad-courses/tasks/create-quiz-questions.md +47 -22
- package/squads/squad-courses/tasks/create-sales-page-brief.md +36 -17
- package/squads/squad-courses/tasks/create-self-evaluation.md +41 -22
- package/squads/squad-courses/tasks/create-shot-list.md +41 -28
- package/squads/squad-courses/tasks/create-speaker-notes.md +43 -23
- package/squads/squad-courses/tasks/create-syllabus-document.md +35 -23
- package/squads/squad-courses/tasks/create-teleprompter-script.md +42 -28
- package/squads/squad-courses/tasks/create-workshop-materials.md +40 -23
- package/squads/squad-courses/tasks/define-competency-framework.md +42 -23
- package/squads/squad-courses/tasks/define-course-scope.md +36 -23
- package/squads/squad-courses/tasks/define-learning-outcomes.md +41 -23
- package/squads/squad-courses/tasks/define-lesson-objectives.md +35 -22
- package/squads/squad-courses/tasks/design-certification-criteria.md +43 -22
- package/squads/squad-courses/tasks/design-email-sequence.md +33 -17
- package/squads/squad-courses/tasks/design-interactive-elements.md +45 -23
- package/squads/squad-courses/tasks/design-intro-outro.md +38 -27
- package/squads/squad-courses/tasks/design-knowledge-checkpoints.md +36 -22
- package/squads/squad-courses/tasks/design-learning-path.md +40 -23
- package/squads/squad-courses/tasks/design-lesson-flow.md +40 -22
- package/squads/squad-courses/tasks/design-module-structure.md +37 -22
- package/squads/squad-courses/tasks/design-peer-review-rubric.md +40 -22
- package/squads/squad-courses/tasks/design-practical-assessment.md +45 -22
- package/squads/squad-courses/tasks/design-pricing-model.md +34 -17
- package/squads/squad-courses/tasks/design-screen-recording-flow.md +41 -28
- package/squads/squad-courses/tasks/design-slide-structure.md +40 -23
- package/squads/squad-courses/tasks/design-student-onboarding.md +34 -17
- package/squads/squad-courses/tasks/design-visual-hierarchy.md +42 -23
- package/squads/squad-courses/tasks/estimate-lesson-duration.md +35 -22
- package/squads/squad-courses/tasks/finalize-course-delivery.md +34 -23
- package/squads/squad-courses/tasks/initiate-course-project.md +38 -23
- package/squads/squad-courses/tasks/map-prerequisite-chain.md +41 -23
- package/squads/squad-courses/tasks/monitor-course-progress.md +34 -23
- package/squads/squad-courses/tasks/plan-b-roll-sequences.md +41 -28
- package/squads/squad-courses/tasks/plan-enrollment-funnel.md +35 -17
- package/squads/squad-courses/tasks/plan-launch-sequence.md +36 -17
- package/squads/squad-courses/tasks/plan-practical-exercises.md +36 -22
- package/squads/squad-courses/tasks/plan-recording-session.md +48 -28
- package/squads/squad-courses/tasks/proofread-course-content.md +30 -22
- package/squads/squad-courses/tasks/review-course-quality.md +34 -23
- package/squads/squad-courses/tasks/select-platform-strategy.md +35 -17
- package/squads/squad-courses/tasks/sequence-difficulty-progression.md +36 -22
- package/squads/squad-courses/tasks/structure-module-sequence.md +40 -23
- package/squads/squad-courses/tasks/validate-pedagogical-coherence.md +43 -23
- package/squads/squad-courses/tasks/write-case-studies.md +30 -22
- package/squads/squad-courses/tasks/write-ebook-chapter.md +30 -22
- package/squads/squad-courses/tasks/write-handout-material.md +30 -22
- package/squads/squad-courses/tasks/write-lesson-content.md +33 -22
- package/squads/squad-courses/tasks/write-slide-content.md +43 -23
- package/squads/squad-courses/tasks/write-summary-sheets.md +30 -22
- package/squads/squad-courses/tasks/write-video-script.md +42 -27
- package/squads/squad-courses/tasks/write-workbook-exercises.md +31 -22
- package/squads/squad-courses/workflows/course-quality-review.yaml +3 -3
- package/squads/squad-courses/workflows/full-course-creation.yaml +2 -2
- package/squads/squad-cybersecurity/README.md +18 -6
- package/squads/squad-cybersecurity/agents/cloud-security-engineer.md +9 -0
- package/squads/squad-cybersecurity/agents/compliance-officer.md +9 -0
- package/squads/squad-cybersecurity/agents/cyber-chief.md +24 -159
- package/squads/squad-cybersecurity/agents/cyber-orqx.md +11 -2
- package/squads/squad-cybersecurity/agents/incident-responder.md +9 -0
- package/squads/squad-cybersecurity/agents/network-security-engineer.md +9 -0
- package/squads/squad-cybersecurity/agents/penetration-tester.md +9 -0
- package/squads/squad-cybersecurity/agents/soc-analyst.md +9 -0
- package/squads/squad-cybersecurity/agents/threat-analyst.md +9 -0
- package/squads/squad-cybersecurity/knowledge-base/chrome-brain-integration.md +17 -35
- package/squads/squad-cybersecurity/knowledge-base/routing-catalog.md +22 -22
- package/squads/squad-cybersecurity/squad.yaml +23 -9
- package/squads/squad-design/README.md +18 -6
- package/squads/squad-design/agents/brad-frost.md +14 -29
- package/squads/squad-design/agents/dan-mall.md +13 -26
- package/squads/squad-design/agents/dave-malouf.md +13 -26
- package/squads/squad-design/agents/design-chief.md +24 -216
- package/squads/squad-design/agents/design-orqx.md +11 -2
- package/squads/squad-design/agents/dx-accessibility-specialist.md +9 -0
- package/squads/squad-design/agents/dx-design-system-architect.md +9 -0
- package/squads/squad-design/agents/dx-frontend-engineer.md +9 -0
- package/squads/squad-design/agents/dx-interaction-designer.md +9 -0
- package/squads/squad-design/agents/dx-performance-engineer.md +9 -0
- package/squads/squad-design/agents/dx-ui-designer.md +9 -0
- package/squads/squad-design/agents/dx-ux-strategist.md +9 -0
- package/squads/squad-design/agents/nano-banana-generator.md +13 -25
- package/squads/squad-design/knowledge-base/brazilian-design-context.md +1 -1
- package/squads/squad-design/knowledge-base/chrome-brain-integration.md +17 -43
- package/squads/squad-design/knowledge-base/design-system-master-reference.md +1 -1
- package/squads/squad-design/knowledge-base/design-to-code-pipeline.md +1 -1
- package/squads/squad-design/knowledge-base/designops-maturity.md +1 -1
- package/squads/squad-design/knowledge-base/famous-design-systems-study.md +1 -1
- package/squads/squad-design/squad.yaml +26 -16
- package/squads/squad-engineering/README.md +82 -0
- package/squads/squad-engineering/agents/eng-architect.md +61 -0
- package/squads/squad-engineering/agents/eng-data.md +50 -0
- package/squads/squad-engineering/agents/eng-dev.md +64 -0
- package/squads/squad-engineering/agents/eng-devops.md +51 -0
- package/squads/squad-engineering/agents/eng-orqx.md +114 -0
- package/squads/squad-engineering/agents/eng-product.md +57 -0
- package/squads/squad-engineering/agents/eng-qa.md +49 -0
- package/squads/squad-engineering/agents/eng-sprint.md +57 -0
- package/squads/squad-engineering/checklists/dod.md +18 -0
- package/squads/squad-engineering/checklists/pre-publicacao.md +14 -0
- package/squads/squad-engineering/knowledge-base/doc-first-na-medida.md +46 -0
- package/squads/squad-engineering/knowledge-base/escada-e-cargos.md +61 -0
- package/squads/squad-engineering/knowledge-base/memoria-por-cargo.md +39 -0
- package/squads/squad-engineering/knowledge-base/seguranca-minima.md +30 -0
- package/squads/squad-engineering/knowledge-base/stack-por-tipo.md +30 -0
- package/squads/squad-engineering/knowledge-base/story-como-contrato.md +30 -0
- package/squads/squad-engineering/preferences/README.md +49 -0
- package/squads/squad-engineering/squad.yaml +202 -0
- package/squads/squad-engineering/tasks/classify-track.md +43 -0
- package/squads/squad-engineering/tasks/develop-story.md +43 -0
- package/squads/squad-engineering/tasks/draft-stories.md +46 -0
- package/squads/squad-engineering/tasks/initial-state-audit.md +55 -0
- package/squads/squad-engineering/tasks/operate-gate-code.md +52 -0
- package/squads/squad-engineering/tasks/plan-orchestration.md +35 -0
- package/squads/squad-engineering/tasks/prepare-environment.md +29 -0
- package/squads/squad-engineering/tasks/publish.md +32 -0
- package/squads/squad-engineering/tasks/run-retro.md +36 -0
- package/squads/squad-engineering/tasks/verify-dod.md +27 -0
- package/squads/squad-engineering/tasks/verify-track-after-diff.md +33 -0
- package/squads/squad-engineering/tasks/write-adr.md +29 -0
- package/squads/squad-engineering/tasks/write-architecture.md +44 -0
- package/squads/squad-engineering/tasks/write-brief.md +42 -0
- package/squads/squad-engineering/tasks/write-migration.md +31 -0
- package/squads/squad-engineering/tasks/write-prd.md +44 -0
- package/squads/squad-engineering/templates/adr-template.md +13 -0
- package/squads/squad-engineering/templates/arquitetura-template.md +43 -0
- package/squads/squad-engineering/templates/brief-template.md +34 -0
- package/squads/squad-engineering/templates/checklist-pre-publicacao-template.md +29 -0
- package/squads/squad-engineering/templates/estado-inicial-template.md +26 -0
- package/squads/squad-engineering/templates/memoria-do-cargo-template.md +32 -0
- package/squads/squad-engineering/templates/plano-de-orquestracao-template.md +20 -0
- package/squads/squad-engineering/templates/prd-template.md +41 -0
- package/squads/squad-engineering/templates/story-template.md +69 -0
- package/squads/squad-engineering/workflows/ajuste-cycle.yaml +75 -0
- package/squads/squad-engineering/workflows/feature-cycle.yaml +112 -0
- package/squads/squad-engineering/workflows/projeto-cycle.yaml +137 -0
- package/squads/squad-finance/README.md +18 -6
- package/squads/squad-finance/agents/budget-controller.md +9 -0
- package/squads/squad-finance/agents/finance-orqx.md +11 -2
- package/squads/squad-finance/agents/pricing-strategist.md +9 -0
- package/squads/squad-finance/agents/profitability-analyst.md +9 -0
- package/squads/squad-finance/agents/revenue-analyst.md +9 -0
- package/squads/squad-finance/knowledge-base/contabilidade-master-reference.md +1 -1
- package/squads/squad-finance/knowledge-base/finance-master-reference.md +1 -1
- package/squads/squad-finance/squad.yaml +18 -9
- package/squads/squad-growth/README.md +18 -6
- package/squads/squad-growth/agents/ga-analytics-engineer.md +9 -0
- package/squads/squad-growth/agents/ga-campaign-analyst.md +9 -0
- package/squads/squad-growth/agents/ga-cro-specialist.md +9 -0
- package/squads/squad-growth/agents/ga-data-analyst.md +9 -0
- package/squads/squad-growth/agents/ga-growth-hacker.md +9 -0
- package/squads/squad-growth/agents/ga-seo-strategist.md +9 -0
- package/squads/squad-growth/agents/growth-orqx.md +14 -5
- package/squads/squad-growth/knowledge-base/chrome-brain-integration.md +17 -38
- package/squads/squad-growth/squad.yaml +21 -16
- package/squads/squad-paidmedia/README.md +18 -6
- package/squads/squad-paidmedia/agents/campaign-analyst.md +9 -0
- package/squads/squad-paidmedia/agents/creative-strategist.md +9 -0
- package/squads/squad-paidmedia/agents/cro-specialist.md +9 -0
- package/squads/squad-paidmedia/agents/depesh-mandalia.md +9 -0
- package/squads/squad-paidmedia/agents/google-ads-specialist.md +9 -0
- package/squads/squad-paidmedia/agents/kasim-aslam.md +9 -0
- package/squads/squad-paidmedia/agents/meta-ads-specialist.md +9 -0
- package/squads/squad-paidmedia/agents/molly-pittman.md +9 -0
- package/squads/squad-paidmedia/agents/nicholas-kusmich.md +9 -0
- package/squads/squad-paidmedia/agents/paidmedia-orqx.md +11 -2
- package/squads/squad-paidmedia/agents/pedro-sobral.md +9 -0
- package/squads/squad-paidmedia/agents/performance-engineer.md +9 -0
- package/squads/squad-paidmedia/agents/pm-creative-performance-analyst.md +13 -4
- package/squads/squad-paidmedia/agents/pm-youtube-ads-specialist.md +12 -3
- package/squads/squad-paidmedia/agents/ralph-burns.md +9 -0
- package/squads/squad-paidmedia/agents/tom-breeze.md +9 -0
- package/squads/squad-paidmedia/agents/traffic-masters-chief.md +19 -201
- package/squads/squad-paidmedia/knowledge-base/chrome-brain-integration.md +17 -40
- package/squads/squad-paidmedia/squad.yaml +29 -7
- package/squads/squad-paidmedia/tasks/design-youtube-ad-campaign.md +2 -2
- package/squads/squad-product/README.md +18 -6
- package/squads/squad-product/agents/product-orqx.md +12 -4
- package/squads/squad-product/agents/ps-client-product-manager.md +9 -1
- package/squads/squad-product/agents/ps-delivery-manager.md +9 -1
- package/squads/squad-product/agents/ps-discovery-lead.md +9 -1
- package/squads/squad-product/agents/ps-product-analyst.md +9 -1
- package/squads/squad-product/agents/ps-product-ops-specialist.md +9 -1
- package/squads/squad-product/agents/ps-product-strategist.md +9 -1
- package/squads/squad-product/knowledge-base/chrome-brain-integration.md +17 -42
- package/squads/squad-product/squad.yaml +21 -16
- package/squads/squad-product/tasks/define-product-okrs.md +1 -1
- package/squads/squad-product/tasks/define-product-vision.md +1 -1
- package/squads/squad-research/README.md +18 -6
- package/squads/squad-research/agents/audience-intelligence.md +11 -2
- package/squads/squad-research/agents/competitive-intelligence.md +11 -2
- package/squads/squad-research/agents/data-chief.md +24 -188
- package/squads/squad-research/agents/data-synthesizer.md +9 -0
- package/squads/squad-research/agents/deep-researcher.md +9 -0
- package/squads/squad-research/agents/market-analyst.md +10 -1
- package/squads/squad-research/agents/research-orqx.md +13 -4
- package/squads/squad-research/agents/trend-forecaster.md +10 -1
- package/squads/squad-research/knowledge-base/agentic-second-brain-reference.md +2 -2
- package/squads/squad-research/knowledge-base/brazilian-market-research-sources.md +1 -1
- package/squads/squad-research/knowledge-base/chrome-brain-integration.md +17 -34
- package/squads/squad-research/knowledge-base/cross-squad-integration-protocol.md +7 -7
- package/squads/squad-research/knowledge-base/multi-agent-research-methodology.md +1 -1
- package/squads/squad-research/knowledge-base/research-synthesis-frameworks.md +1 -1
- package/squads/squad-research/preferences/README.md +7 -7
- package/squads/squad-research/squad.yaml +32 -20
- package/squads/squad-research/tasks/analyze-audience-psychographics.md +1 -1
- package/squads/squad-research/tasks/analyze-competitor-positioning.md +1 -1
- package/squads/squad-research/tasks/analyze-competitor-pricing.md +2 -2
- package/squads/squad-research/tasks/analyze-industry-trends.md +1 -1
- package/squads/squad-research/tasks/analyze-pricing-landscape.md +1 -1
- package/squads/squad-research/tasks/analyze-social-listening.md +1 -1
- package/squads/squad-research/tasks/analyze-value-chain.md +1 -1
- package/squads/squad-research/tasks/benchmark-competitor-digital.md +3 -3
- package/squads/squad-research/tasks/build-audience-persona.md +6 -6
- package/squads/squad-research/tasks/build-data-narrative.md +1 -1
- package/squads/squad-research/tasks/compile-competitive-dossier.md +4 -4
- package/squads/squad-research/tasks/conduct-jobs-to-be-done.md +5 -5
- package/squads/squad-research/tasks/coordinate-cross-squad-research.md +6 -6
- package/squads/squad-research/tasks/create-battle-card.md +3 -3
- package/squads/squad-research/tasks/create-executive-briefing.md +1 -1
- package/squads/squad-research/tasks/create-future-landscape.md +4 -4
- package/squads/squad-research/tasks/create-insight-deck.md +1 -1
- package/squads/squad-research/tasks/create-swot-analysis.md +4 -4
- package/squads/squad-research/tasks/detect-weak-signals.md +3 -3
- package/squads/squad-research/tasks/evaluate-market-entry.md +1 -1
- package/squads/squad-research/tasks/forecast-industry-trends.md +4 -4
- package/squads/squad-research/tasks/forecast-market-growth.md +1 -1
- package/squads/squad-research/tasks/generate-actionable-recommendations.md +3 -3
- package/squads/squad-research/tasks/identify-competitive-gaps.md +1 -1
- package/squads/squad-research/tasks/identify-inflection-points.md +3 -3
- package/squads/squad-research/tasks/identify-market-segments.md +1 -1
- package/squads/squad-research/tasks/manage-research-sprint.md +1 -1
- package/squads/squad-research/tasks/map-audience-ecosystem.md +1 -1
- package/squads/squad-research/tasks/map-audience-journey.md +4 -4
- package/squads/squad-research/tasks/map-competitive-landscape.md +3 -3
- package/squads/squad-research/tasks/map-strategic-implications.md +4 -4
- package/squads/squad-research/tasks/map-technology-adoption.md +3 -3
- package/squads/squad-research/tasks/orchestrate-research-pipeline.md +2 -2
- package/squads/squad-research/tasks/predict-market-shifts.md +1 -1
- package/squads/squad-research/tasks/profile-ideal-customer.md +4 -4
- package/squads/squad-research/tasks/run-porter-five-forces.md +1 -1
- package/squads/squad-research/tasks/run-scenario-planning.md +3 -3
- package/squads/squad-research/tasks/segment-audience.md +1 -1
- package/squads/squad-research/tasks/size-market-tam-sam-som.md +4 -4
- package/squads/squad-research/tasks/synthesize-research-report.md +4 -4
- package/squads/squad-research/tasks/track-emerging-technologies.md +3 -3
- package/squads/squad-research/tasks/visualize-research-data.md +1 -1
- package/squads/squad-research/workflows/audience-intelligence-cycle.yaml +4 -4
- package/squads/squad-research/workflows/competitive-intelligence-cycle.yaml +3 -3
- package/squads/squad-research/workflows/deep-research-cycle.yaml +3 -3
- package/squads/squad-research/workflows/full-research-sprint.yaml +7 -7
- package/squads/squad-research/workflows/market-analysis-cycle.yaml +3 -3
- package/squads/squad-research/workflows/trend-forecasting-cycle.yaml +3 -3
- package/squads/squad-storytelling/README.md +18 -6
- package/squads/squad-storytelling/agents/blake-snyder.md +9 -0
- package/squads/squad-storytelling/agents/dan-harmon.md +9 -0
- package/squads/squad-storytelling/agents/joseph-campbell.md +9 -0
- package/squads/squad-storytelling/agents/keith-johnstone.md +9 -0
- package/squads/squad-storytelling/agents/kindra-hall.md +9 -0
- package/squads/squad-storytelling/agents/marshall-ganz.md +9 -0
- package/squads/squad-storytelling/agents/matthew-dicks.md +9 -0
- package/squads/squad-storytelling/agents/nancy-duarte.md +9 -0
- package/squads/squad-storytelling/agents/oren-klaff.md +9 -0
- package/squads/squad-storytelling/agents/park-howell.md +9 -0
- package/squads/squad-storytelling/agents/shawn-coyne.md +9 -0
- package/squads/squad-storytelling/agents/story-chief.md +24 -170
- package/squads/squad-storytelling/agents/storytelling-orqx.md +12 -3
- package/squads/squad-storytelling/knowledge-base/chrome-brain-integration.md +17 -34
- package/squads/squad-storytelling/squad.yaml +28 -10
- package/agents/iron-orqx.md +0 -211
- package/bin/cli.js +0 -261
- package/squads/squad-claude/agents/db-sage.md +0 -152
- package/squads/squad-claude/agents/tools-orqx.md +0 -219
- package/squads/squad-cloning/agents/sop-extractor.md +0 -61
- package/squads/squad-design/agents/design-system.md +0 -210
- package/squads/squad-design/agents/ux-designer.md +0 -124
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gate
|
|
3
|
+
description: Quality gate de aprovação duplicada. Audita qualquer entregável — arte, carrossel, story, LP, site, sistema, script, migration, pipeline de dados, PDF, proposta, contrato, vídeo, relatório, README, ADR, runbook, PR — com um painel de auditores independentes ANTES de virar entrega, commit, PR, merge, deploy ou publicação. Dispara quando você escreve "gate", "audita isso", "roda o gate", quando termina algo que vai sair da sua máquina, ou antes de apresentar como pronto. "gate ciclo <pasta>" (ou "gate lote <pasta>") audita um conjunto.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Gate — aprovação duplicada
|
|
7
|
+
|
|
8
|
+
Você produz, o gate barra, nada sai sem parecer com **zero BLOQUEADOR**.
|
|
9
|
+
|
|
10
|
+
A premissa é o princípio dos quatro olhos: quem escreveu não consegue auditar o que escreveu, porque audita a intenção em vez do resultado. O auditor tem que chegar sem saber o que você quis fazer.
|
|
11
|
+
|
|
12
|
+
## 0. Quando dispara
|
|
13
|
+
|
|
14
|
+
| Gatilho | Ação |
|
|
15
|
+
|---|---|
|
|
16
|
+
| "gate", "audita isso", "roda o gate" | Auditar a peça citada, ou a última produzida na sessão. Sem perguntar nada |
|
|
17
|
+
| Terminou algo que VAI SAIR (cliente, publicação, PR, merge, deploy, outra pessoa) | Rodar o gate ANTES de apresentar como pronto |
|
|
18
|
+
| Terminou algo local/experimental | Oferecer em uma linha: "Pronto. Rodo o gate?" |
|
|
19
|
+
| "gate ciclo \<pasta\>" ou "gate lote \<pasta ou lista\>" | Modo lote, seção 7 |
|
|
20
|
+
| "libera sem gate" | Válvula de escape, seção 8 |
|
|
21
|
+
|
|
22
|
+
## 1. Faixas
|
|
23
|
+
|
|
24
|
+
- **VAI SAIR** (cliente externo, publicação, PR, merge, deploy, entrega para outra pessoa — qualquer coisa que outro humano vai ler, ver ou rodar): painel completo, 2 a 3 lentes — **mais uma** se a lente CONVENÇÃO se aplicar (a peça entra num sistema que já existe), e mais um painel inteiro se a peça for mista (seção 3, passo 1).
|
|
25
|
+
- **LOCAL** (uso próprio, rascunho, experimento, spike que você vai jogar fora): só a lente ★ do painel.
|
|
26
|
+
|
|
27
|
+
Em dúvida, pergunte em uma linha. Peça de cliente e código que toca dado de produção **nunca** rodam na faixa LOCAL.
|
|
28
|
+
|
|
29
|
+
*Vocabulário anterior desta skill, mantido só para leitura de pareceres antigos e de agentes com versão velha: **CLIENTE-FINAL** = VAI SAIR · **INTERNO** = LOCAL.*
|
|
30
|
+
|
|
31
|
+
**Peça que SOBE de faixa no meio do ciclo** (o rascunho LOCAL virou entrega): a faixa nova recomeça em **rodada 1** e o contador de ciclos zera. A lente que nunca rodou não herda aprovação de rodada nenhuma — audita como rodada 1 dela, e não entra "de graça". Dita assim porque a tentação oposta é somar as rodadas antigas e chegar no teto sem nunca ter rodado o painel completo.
|
|
32
|
+
|
|
33
|
+
⛔ **DESCER de faixa não zera nada, e não afrouxa o painel.** Peça que reprovou e está esperando escalar não vira LOCAL para ganhar ciclos novos: o contador continua de onde estava e a **escalada pendente continua pendente**. Vale para toda descida, inclusive a de boa-fé no meio do ciclo: **o painel que audita a rodada seguinte é sempre o da faixa MAIS RIGOROSA entre a antiga e a nova** — descer nunca reduz o número de lentes de uma peça que já estava sob painel completo. Sem isso, a fuga volta pela outra porta: em vez de zerar o contador, reclassifica e ganha auditoria mais fraca. Toda mudança de faixa vai registrada no parecer, no campo próprio do template (seção 6), com de-para, motivo e data. Mesma lógica da guarda da reentrada por fonte (seção 6), escrita aqui de novo porque é a mesma fuga por outra porta: sob prazo, reclassificar a peça é mais fácil do que consertá-la.
|
|
34
|
+
|
|
35
|
+
### ⚖️ Dimensionamento: o custo da auditoria tem que caber no tamanho da peça
|
|
36
|
+
|
|
37
|
+
A faixa diz SE audita. Isto diz QUANTO. Ignorar esta seção é o erro que fez uma legenda de 10 linhas custar **13 minutos de auditoria para 1 minuto de escrita** (caso real, 09/08/2026).
|
|
38
|
+
|
|
39
|
+
| Tipo de entrega | Verificação | Custo-alvo |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| **Texto curto** (legenda, mensagem, story escrito, bio, e-mail, commit message) | **SEM painel.** Quem produziu confere cada dado contra a fonte por script/grep e **cola a evidência da conferência** no lugar do parecer. Continua valendo o anti-vício de IA e a checagem de fato | ~1 min |
|
|
42
|
+
| **Variação de peça já aprovada** (story a partir do feed, redimensionamento, troca de data, mesma função com outro parâmetro) | **1 lente só, no risco NOVO daquele formato.** Não remedir o que já foi medido na peça irmã com as mesmas cores e a mesma copy | ~2 min |
|
|
43
|
+
| **Peça visual nova, PDF, site, sistema, pipeline, proposta, documento técnico** | Painel completo da seção 5 | sem teto |
|
|
44
|
+
|
|
45
|
+
**A distinção que decide:** separar **defeito invisível** de **defeito verificável**.
|
|
46
|
+
- **Invisível** (contraste, safe zone, crop do grid, dedo a mais em foto de IA, emenda de gradiente, exceção engolida, race condition): o olho não pega e quem produziu tem viés. **Exige painel.**
|
|
47
|
+
- **Verificável** (telefone, endereço, data, preço, nome, registro profissional, nome de flag, caminho de arquivo): confere-se contra a fonte em segundos. **Não exige painel, exige conferência.**
|
|
48
|
+
|
|
49
|
+
⛔ **Não abrir rodada 2 para confirmar correção de fato verificável.** Se o achado foi "faltou o andar no endereço", quem produziu insere, confere contra a fonte, cola a evidência e libera. Rodada 2 existe para achado que precisa de olho independente, não para alguém confirmar que você digitou certo.
|
|
50
|
+
|
|
51
|
+
⚠️ **Regra boa aplicada sem proporção vira burocracia, e burocracia faz abandonar a regra inteira quando o prazo aperta.** Dimensionar é o que mantém o gate vivo.
|
|
52
|
+
|
|
53
|
+
## 2. Regras duras (invioláveis)
|
|
54
|
+
|
|
55
|
+
1. **Auditor nunca é quem produziu.** Cada lente roda num subagente NOVO, contexto limpo, que recebe só os insumos e nunca o seu raciocínio. Se você contar a intenção, ele audita a intenção.
|
|
56
|
+
2. **Quatro insumos:** a peça + o contexto (briefing, copy, issue, ticket, requisito) + as convenções (brandkit/skill da marca, ou README, ADR, CONTRIBUTING, config do linter) + a versão/peça anterior do mesmo ciclo. **Um quinto, quando a peça tem origem de dados:** uma amostra representativa para rodar contra (com nulo, com campo ausente, e vazia) — sem ela o auditor tem que inventar o próprio dado sem saber que devia, e os três casos de execução obrigatória logo abaixo não acontecem. **Insumo faltando NÃO trava:** audita assim mesmo e registra a ausência como achado IMPORTANTE.
|
|
57
|
+
3. **Anti-carimbo:** todo auditor lista os 3 piores defeitos ANTES de emitir qualquer veredito.
|
|
58
|
+
4. **Classificação:** BLOQUEADOR (impede sair) / IMPORTANTE (corrigir antes de sair) / POLIMENTO (opcional). Sempre com evidência concreta (arquivo, linha, comando, saída real, cor, medida) e correção sugerida.
|
|
59
|
+
5. **Só BLOQUEADOR trava.** A nota de 0 a 10 informa, nunca decide.
|
|
60
|
+
6. **Máximo 2 CICLOS** de corrige-e-reaudita — **1 ciclo = corrigir + reauditar só as lentes reprovadas**. A rodada 1 é a auditoria original; ciclo 1 → rodada 2; ciclo 2 → rodada 3. **Se a rodada 3 reprovar, pare e escale, com o diff das 3 tentativas.** Conte CICLO, não rodada: a redação antiga ("máximo 2 rodadas... na terceira, pare") admitia duas leituras opostas quando a rodada 2 reprovava, e a leitura conveniente é sempre a que quem corrigiu quer.
|
|
61
|
+
7. **O gate aponta, você corrige.** Auditor não edita arquivo nenhum.
|
|
62
|
+
8. **Preflight antes do painel** (seção 4). O que a toolchain pega de graça não gasta token de auditor.
|
|
63
|
+
9. **Auditor roda em modelo mais barato** que a sessão quando o Agent tool aceitar `model` (sonnet como padrão; haiku para lente mecânica). Nunca subir de modelo para auditar.
|
|
64
|
+
10. **Tudo vira parecer**, inclusive quando você pula o gate.
|
|
65
|
+
|
|
66
|
+
### Âncoras de calibração (anti-viés — incluir SEMPRE no prompt de cada auditor)
|
|
67
|
+
|
|
68
|
+
⚠️ **Existem DUAS listas, e usar a errada desarma o gate.** Peça visual, documento, vídeo e relatório usam a **lista A**. Site, app, script, automação, migration, pipeline e documento técnico usam a **lista B**. Escolher pelo tipo da peça, e no prompt do auditor mandar SÓ a lista que vale. Peça mista (LP com formulário, dashboard, runbook com script) leva as duas.
|
|
69
|
+
|
|
70
|
+
**LISTA A — peça visual, documento, vídeo, relatório.**
|
|
71
|
+
BLOQUEADOR só quando se encaixa em pelo menos um destes:
|
|
72
|
+
(a) fato errado contra a fonte — preço, nome, data, promessa, capacidade;
|
|
73
|
+
(b) violação objetiva de brandkit — cor, fonte ou logo errados, identidade de outra marca;
|
|
74
|
+
(c) ilegibilidade real — par TEXTO × FUNDO IMEDIATO abaixo de 3:1 (texto grande) ou 4.5:1 (normal). ⚠️ Medir o par certo: texto claro sobre objeto escuro é contraste BOM; variação do fundo atrás do texto NÃO é defeito de legibilidade;
|
|
75
|
+
(d) o produto ou a promessa central não aparece na peça;
|
|
76
|
+
(e) erro de português;
|
|
77
|
+
(f) quase-clone (distância aHash ≤6) de peça já publicada — comparar contra as peças-irmãs do lote **e contra a que está NO AR** (o preflight só enxerga o lote; a peça publicada precisa ser buscada);
|
|
78
|
+
(g) elemento gráfico cobrindo ou cortando logo ou texto de forma que impeça a leitura.
|
|
79
|
+
|
|
80
|
+
**LISTA B — código, sistema, script, automação, migration, pipeline, documento técnico.**
|
|
81
|
+
BLOQUEADOR só quando se encaixa em pelo menos um destes:
|
|
82
|
+
(a) o código está errado: produz resultado incorreto, corrompe estado, perde dado;
|
|
83
|
+
(b) quebra em entrada plausível: **nulo em campo que existe**, string vazia, zero, negativo, duplicado, fora de ordem, acento, volume 10x. ⚠️ **Nulo em campo que existe, campo ausente e origem sem nenhum registro são três casos diferentes** — checar separadamente, e o terceiro é o que sai plausível: job sem a pasta de origem gerou resultado vazio com `EXIT CODE: 0` e zero linha de stderr, indistinguível de um dia real sem movimento (caso real de auditoria);
|
|
84
|
+
(b2) **data ou hora sem fuso declarado** onde o corte do dia decide o resultado — `date.today()`, `datetime.now()`, `new Date()` em job diário, recorte de período, agendamento ou nome de arquivo por data. Máquina em fuso diferente do negócio grava no dia errado e o dado sai plausível. **Ponto cego confirmado do painel:** num caso real (17/08/2026), duas lentes independentes acharam 3 bloqueadores numa cobaia e nenhuma das duas levantou o `date.today()`;
|
|
85
|
+
(b3) **parâmetro que entra em caminho de arquivo sem validação** — `../` no nome do destino escreve fora da pasta e sobrescreve arquivo de terceiro;
|
|
86
|
+
(c) segredo, credencial ou dado pessoal exposto no código, no log ou no traceback. Vale também para **credencial declarada no fonte com valor de placeholder**: o defeito é o padrão, não o conteúdo da string, porque é exatamente por ali que o valor verdadeiro entra depois. ⚠️ **Placeholder é BLOQUEADOR na lente, não na consolidação.** Medido em caso real (17/08/2026): o auditor reconheceu que o padrão era o defeito, escreveu isso no parecer, e mesmo assim classificou como IMPORTANTE — quem promoveu foi o consolidador. Gate que depende da consolidação para chegar na severidade certa falha quando a consolidação está apressada, e ninguém percebe, porque o veredito final sai igual. Ao encontrar `DB_PASSWORD = "troque_aqui"`, `api_key = "xxx"` ou equivalente, escreva BLOQUEADOR sem procurar atenuante: "é só exemplo", "é ambiente local", "está claramente marcado" e "o valor é falso" não rebaixam nenhum destes;
|
|
87
|
+
(d) não é idempotente onde precisa ser: rodar duas vezes produz resultado diferente do de rodar uma;
|
|
88
|
+
(e) falha em silêncio: engole exceção, retorna vazio sem erro, ou reporta sucesso sem ter feito;
|
|
89
|
+
(f) o teste que existe passa mesmo com o defeito presente, ou não testa o que diz testar;
|
|
90
|
+
(g) rota, endpoint ou tabela sem autenticação, ou com permissão mais ampla que a necessária;
|
|
91
|
+
(h) erro de português em texto que outra pessoa lê;
|
|
92
|
+
(i) **migration, carga ou DDL sem caminho de volta** — sem down-script, sem rollback, ou que não pode ser aplicada duas vezes. Está aqui, e não só dentro do painel de pipeline, porque a severidade tem que estar onde o auditor procura severidade: pendurada só no painel, ela dependia de quem lesse inferir pela regra do fim desta seção.
|
|
93
|
+
|
|
94
|
+
**Se não se encaixa em nenhum item da lista aplicável: no máximo IMPORTANTE.**
|
|
95
|
+
|
|
96
|
+
⚠️ **Três casos só aparecem RODANDO, e onde a peça tem origem de dados a execução é OBRIGATÓRIA, em qualquer lente:** nulo em campo que existe, campo ausente, e origem sem nenhum registro (pasta vazia, tabela vazia, arquivo que não está lá). O prefixo comum permite escrever "não validado, análise por leitura" — **nestes três isso não é neutro: é achado IMPORTANTE de cobertura, e vai no parecer com esse nome.** Está aqui nas âncoras, e não dentro de uma lente, porque valer só para uma lente foi o defeito. **Origem de dados é qualquer entrada externa ao processo** — arquivo, tabela, pasta, API, fila de mensagem, webhook, variável de ambiente, parâmetro de linha de comando, stdin. A definição é funcional de propósito: lista fechada convida a dizer "isso não é nenhum dos quatro, então não preciso rodar", e é por aí que a exigência se esvazia. Só não se aplica quando **não há entrada externa nenhuma** — peça 100% autocontida.
|
|
97
|
+
|
|
98
|
+
**Gosto não é defeito.** "Enquadramento podia ser melhor", "podia ter mais da cor da marca", "texto podia ser maior", "eu teria estruturado diferente", "esse nome podia ser melhor", "faltou um comentário": sem violar os critérios acima, é POLIMENTO. Preferência de estilo que o linter do projeto não reclama é POLIMENTO.
|
|
99
|
+
|
|
100
|
+
⚠️ **Contraste: o falso positivo mais comum do painel.** Amostrar pixel solto na borda da letra mede o **halo de anti-aliasing**, não o fundo, e devolve número catastrófico numa peça legível (caso real: dois auditores acusaram 2,17:1 e 3,60:1 onde a medição correta deu 6,2-8,5:1). Medir **núcleo da letra × anel de fundo imediato**: máscara do texto erodida, e como fundo o anel entre dilatação de 9px e de 3px — nunca o pixel colado no glifo. **Antes de reportar contraste como BLOQUEADOR, remedir.** Antes de mandar mexer no design por contraste, remedir de novo.
|
|
101
|
+
|
|
102
|
+
**Nota ancorada:** 9-10 = sai já · 7-8 = sai depois dos polimentos · 5-6 = IMPORTANTE aberto · 4 ou menos = BLOQUEADOR aberto. O veredito binário decide; a nota só comunica.
|
|
103
|
+
|
|
104
|
+
**Rodada 2 ou mais:** julgar APENAS (1) se os bloqueadores anteriores foram resolvidos, (2) defeitos NOVOS introduzidos pela correção que se enquadrem nos critérios acima e (3) defeito que já existia e **nunca foi avaliado por auditor nenhum** — nesse caso rotular no parecer como `achado tardio` **e provar a ausência, citando onde ela está**: "não consta em nenhum parecer anterior, o trecho X nunca foi mencionado". Rótulo sem essa citação não vale, porque ninguém consegue distinguir "ninguém olhou" de "olharam e deixaram passar", e é por essa fresta que promoção de severidade entra vestida de achado novo. É proibido endurecer critério entre rodadas, promover severidade de achado antigo, ou reabrir ponto já dado como resolvido. *(Exceção: reentrada por fonte, seção 6 — ela volta rotulada como rodada 1 e esta proibição não a alcança.)*
|
|
105
|
+
|
|
106
|
+
⚠️ **Por que o item (3) existe, e por que ele não abre a porteira.** Sem ele, um defeito real que a rodada 1 deixou passar ficava sem ninguém com mandato para levantá-lo: não é bloqueador antigo sendo reconferido, não é defeito novo da correção, e a reentrada por fonte não socorre porque só vale para peça **já aprovada**. Auditor roda em modelo mais barato de propósito (regra 9), então deixar passar é esperado, não excepcional. O que continua barrado é o resto: **"eu agora acho que aquilo era pior" é promoção de severidade e segue proibido**, gosto segue POLIMENTO, e achado tardio só é BLOQUEADOR se se encaixar na lista aplicável. O que impede ciclo infinito é o teto da regra 6, não a mordaça do auditor: se a rodada 3 reprovar por achado tardio, escala e um humano decide.
|
|
107
|
+
|
|
108
|
+
⚠️ **Padrão observado (caso real, 09/08/2026):** o auditor confirmou que o único BLOQUEADOR estava resolvido e mesmo assim deu REPROVADO, usando como motivo um achado **IMPORTANTE** ainda aberto. A crítica de mérito dele era boa; o veredito era indevido. **Auditor com achado editorial válido tende a usar o veredito para forçar a correção.** Ao consolidar: se zero bloqueador sobrou, o veredito é LIBERADO com o IMPORTANTE registrado, mesmo que a lente tenha escrito REPROVADO. Aplicar a correção quando ela for boa e barata, sem gastar rodada por isso.
|
|
109
|
+
|
|
110
|
+
### ⭐ A lente que quase todo gate esquece: conflito entre correções
|
|
111
|
+
|
|
112
|
+
Roda em quem produziu, ANTES de aplicar as correções de uma rodada — **não é subagente**. Existe porque **corrigir é editar, e editar é produzir**: o padrão observado desde 31/07/2026 é que a rodada 1 pega defeito de quem produziu e a rodada 2 pega defeito que a correção criou.
|
|
113
|
+
|
|
114
|
+
Duas perguntas, as duas obrigatórias, porque a primeira sozinha não segura.
|
|
115
|
+
|
|
116
|
+
1. **A correção de um achado desfaz a de outro?** Quando duas lentes puxam para lados opostos, atender as duas ao pé da letra é a armadilha: a segunda correção reintroduz o que a primeira tinha removido, e na reauditoria cada lente confirma só o próprio achado e ambas aprovam. Havendo conflito, escolha explicitamente qual princípio vence, escreva no parecer por quê, e registre o que foi sacrificado. Não tente satisfazer os dois.
|
|
117
|
+
|
|
118
|
+
2. **Ao estreitar uma rede de segurança larga, o que ela cobria por acidente?** Vale para `except` genérico, validação ampla, permissão folgada, retry que engolia tudo, `try` em volta de bloco grande. Liste cada caso que a rede segurava sem ser o alvo da correção e confirme **para onde cada um vai agora**.
|
|
119
|
+
|
|
120
|
+
⚠️ **As duas respostas vão ESCRITAS no parecer, antes de reauditar.** Sem isso, esta é a única checagem do gate que ninguém de fora consegue conferir — e a regra dura nº 1 diz justamente que quem produziu não audita o que produziu. O campo `lente ⭐:` do parecer (seção 6) é obrigatório em toda rodada que veio depois de uma correção; 2 a 4 linhas bastam, e "nenhuma rede foi estreitada" é resposta válida quando for verdade. **CADA auditor da reauditoria recebe esse texto como insumo e DEVE dizer, em uma linha, se concorda com ele ou o contesta** — cada lente responde por si, não vale uma consolidar pelas outras — não é faculdade dele, é item do parecer. É o que transforma a lente ⭐ de autodeclaração em algo auditável, e sem essa obrigação o campo vira carimbo que só quem escreveu leu. Peça de texto curto que nunca abriu rodada de correção não gera campo nenhum: a lente ⭐ só existe onde houve correção.
|
|
121
|
+
|
|
122
|
+
⚠️ **A pergunta 1 pode estar respondida certa e o resultado ainda ser um bloqueador novo.** Aconteceu num caso real (17/08/2026): as três correções da rodada 1 atuavam em pontos diferentes e de fato não colidiam, e ainda assim estreitar o `except Exception` deixou o laço descoberto — JSON válido com topo não iterável passou a derrubar a função inteira e **perder junto os arquivos válidos já contados**. Antes, o mesmo input perdia só um arquivo, em silêncio, mas gravava o resto: a correção abriu defeito pior que o original. A pergunta 2 nasceu daí. É a família do padrão de sempre virada do avesso: não é "o documento pede a ação e não pede a verificação", é **a checagem existe, é feita, e faz a pergunta incompleta**.
|
|
123
|
+
|
|
124
|
+
## 3. Fluxo (a ordem, ponta a ponta)
|
|
125
|
+
|
|
126
|
+
1. **Identificar** a peça, o tipo (extensão/pasta: visual, documento, vídeo, relatório, código, pipeline, documento técnico) e a faixa.
|
|
127
|
+
⚠️ **Os tipos não são exclusivos, e tratá-los como exclusivos apaga checagem em silêncio.** Peça que é código **e** pipeline (script que lê arquivo e grava em banco, serviço com migration junto) roda os **DOIS** painéis, nunca escolhe um: caminho de volta de migration, schema drift, chave duplicada, particionamento e custo/escala moram no painel PIPELINE DE DADOS e não aparecem em lugar nenhum se você classificar como "é um script". Rodar os dois custa mais, e esse custo está decidido: a lente que nunca rodou não entra aprovada. **Não repita a lente que já cobriu o mesmo conteúdo** — ★ ADVERSARIAL e ★ CORREÇÃO DO DADO olham coisas diferentes e rodam as duas; USUÁRIO-ZERO roda uma vez só.
|
|
128
|
+
⚠️ **Peça de N arquivos continua sendo UMA peça.** Carrossel de 5 slides, componente com 3 arquivos, migration com up e down: os N caminhos vão juntos em `{PEÇA}`, numa rodada só por lente — é o que permite a lente enxergar a inconsistência ENTRE os arquivos. Isso **não** é o modo lote da seção 7, que é para peças **diferentes** auditadas no mesmo dia.
|
|
129
|
+
2. **Reunir os insumos** (regra dura 2: quatro, mais a amostra de dados quando a peça tem origem de dados). Peça: o arquivo ou o diff. Contexto: briefing, issue, ticket, ou o que foi pedido. Convenções: brandkit/skill da marca, ou README, ADR, CONTRIBUTING, config do linter. Anterior: a peça mais recente do mesmo ciclo, o `git log`/`git diff` da versão anterior, ou o último parecer em `_auditoria/`. **Amostra:** quando a peça lê entrada externa, monte e entregue ao auditor um dado de teste que contenha nulo em campo que existe, um registro com campo ausente, e o caso vazio — quem monta é quem dispara o painel, não o auditor, e sem isso os três casos de execução obrigatória da seção 2 não acontecem. Insumo que faltar vira achado IMPORTANTE e o gate segue.
|
|
130
|
+
3. **Preflight** (seção 4). Achado dele entra direto no parecer, sem gastar auditor.
|
|
131
|
+
4. **Disparar o painel EM PARALELO**: uma única mensagem com N chamadas de subagente (`subagent_type: general-purpose`), cada uma com o prefixo comum mais a lente mais a lista de âncoras que vale mais os caminhos reais. **Some a lente CONVENÇÃO sempre que a peça entra num sistema que já existe** — ela é obrigatória nesse caso e é a que se esquece, porque não pertence a nenhum painel. Nunca em sequência quando dá para paralelizar, e nunca no próprio turno quando dá para isolar.
|
|
132
|
+
5. **Consolidar**: remover achado duplicado, agrupar por severidade, decidir o veredito (zero BLOQUEADOR = LIBERADO).
|
|
133
|
+
6. **Gravar** o parecer e a linha do ledger (seção 6). Se os hooks opcionais da seção 10 estiverem ativados, limpar o flag: `rm -f /tmp/gate-dirty-*`.
|
|
134
|
+
7. Se REPROVADO, **nesta ordem**: (a) **planejar** as correções, sem escrever ainda; (b) **passar a lente ⭐** sobre o plano e escrevê-la no parecer; (c) **aplicar**; (d) **reauditar** só as lentes reprovadas, mandando o texto da ⭐ como insumo — teto de 2 ciclos (regra 6).
|
|
135
|
+
A ordem é esta e não outra: a lente ⭐ pergunta se uma correção desfaz a outra, e essa pergunta não tem resposta depois que as duas já estão no disco. Duas saídas, escritas para você não ficar num beco: **correção de fato verificável** (o preço errado, o andar do endereço) não gera campo ⭐ nenhum nem abre rodada 2 — é a seção 1 que manda, confere contra a fonte e libera; e **correção que mudou de forma enquanto era escrita** volta para a lente ⭐ sobre o que foi de fato aplicado, antes de reauditar.
|
|
136
|
+
|
|
137
|
+
## 4. Preflight (roda antes do painel, é de graça)
|
|
138
|
+
|
|
139
|
+
**Caminho padrão, sem depender de nada instalado.** Use o que o projeto já tem, na ordem, e pare no primeiro que falhar:
|
|
140
|
+
|
|
141
|
+
1. **Typecheck / compilação:** `tsc --noEmit`, `mypy`, `cargo check`, o que o projeto usar.
|
|
142
|
+
2. **Lint:** `ruff`, `eslint`, `black --check`, conforme o projeto.
|
|
143
|
+
3. **Teste:** a suíte existente. ⚠️ **Se não existir suíte, registrar como achado IMPORTANTE ("peça sem teste automatizado") e seguir.** Isso tem que ser mecânico porque **ausência não aparece em lente nenhuma**: as lentes leem o que está escrito, e teste que não existe é justamente o que não está lá para ser lido. Caso real (11/08/2026): dois auditores independentes pegaram 6 de 6 defeitos plantados numa cobaia e os dois deixaram passar o "sem teste automatizado".
|
|
144
|
+
4. **Segredo:** varredura por padrão de chave, token, senha e URL com credencial nos arquivos alterados — `git diff --name-only` diz quais são. Fora de repositório, varra todos os arquivos que você está entregando.
|
|
145
|
+
5. **Diff limpo:** o que está sendo auditado é o que está no disco? `git status --porcelain` e `git diff --stat`: saída vazia é o que você quer. Se houver alteração não salva ou não commitada relevante, diga qual. Fora de repositório, confira data de modificação contra a hora da última edição.
|
|
146
|
+
|
|
147
|
+
Nunca instalar ferramenta nova para o preflight. Se a toolchain não existir no projeto, registre e vá para o painel.
|
|
148
|
+
|
|
149
|
+
**Opcional, para peça visual:** se houver Python com PIL na máquina, `python3 <pasta-desta-skill>/preflight.py <peça> [pasta-do-ciclo]` (no Windows o binário costuma ser `python` ou `py -3`) faz de graça o que a lente pagaria caro: hash da peça, dimensões, detecção de quase-clone por hash perceptual dentro do lote, e conferência dos assets. Ele é **opcional**: falhou, não existe, ou não há Python? Registra no parecer e segue direto para o painel — o caminho dos 5 passos acima continua valendo.
|
|
150
|
+
|
|
151
|
+
⚠️ **Peça de N arquivos: rode uma vez por arquivo** (o segundo argumento é que recebe a pasta do ciclo). E **os arquivos da própria peça aparecem como `[SUSPEITA] QUASE-CLONE`, o que é esperado e não é achado**: slide-irmão de um carrossel bem-feito tem a mesma grade, a mesma paleta e o mesmo template de propósito. O item (f) da lista A é sobre peça **diferente** — as irmãs do lote e a que está no ar —, nunca sobre os pedaços da mesma peça. Confira a origem de cada suspeita antes de registrar qualquer coisa.
|
|
152
|
+
|
|
153
|
+
## 5. Painéis (prompts inline, não dependem de agente nenhum)
|
|
154
|
+
|
|
155
|
+
Prefixo comum a TODO auditor, preenchendo com os caminhos reais:
|
|
156
|
+
|
|
157
|
+
> Você é auditor independente do gate. Você NÃO produziu esta peça e NÃO deve editá-la, só emitir parecer. Leia os insumos: peça {PEÇA}, contexto/briefing/requisito {CONTEXTO}, convenções {CONVENÇÕES: brandkit, ou README, ADR, CONTRIBUTING, config do linter}, versão/peça anterior {ANTERIOR} e, quando a peça lê entrada externa, a amostra de teste {AMOSTRA: dado com nulo em campo que existe, dado com campo ausente, e o caso vazio}. Se algum faltar, registre como IMPORTANTE e siga. Liste os 3 PIORES defeitos ANTES de qualquer veredito. Depois: achados classificados BLOQUEADOR/IMPORTANTE/POLIMENTO, cada um com evidência concreta e correção sugerida; veredito da sua lente (APROVADO/REPROVADO); nota 0-10. Sem elogio de cortesia — se estiver bom, diga curto e aprove. Se você testou alguma coisa de fato, diga o que rodou e o que saiu; se não testou, escreva "não validado, análise por leitura" em vez de afirmar que testou.
|
|
158
|
+
|
|
159
|
+
Mandar junto **só a lista de âncoras que vale** para o tipo da peça (seção 2). Peça de N arquivos: os N caminhos vão juntos em `{PEÇA}`, uma rodada por lente (seção 3, passo 1).
|
|
160
|
+
|
|
161
|
+
### DESIGN (arte, carrossel, story, LP visual) — âncoras lista A
|
|
162
|
+
- ★ **MARCA**: paleta, tipografia, logo e textura assinatura contra o brandkit; reconhecimento em 1 segundo; quase-clone da peça anterior; tom visual (a marca do cliente, nunca a de quem produziu, em peça de cliente).
|
|
163
|
+
- **TÉCNICA**: contraste WCAG dos textos sobre o fundo real (medir como manda a seção 2 — remedir antes de acusar); legibilidade em thumbnail (~160px); hierarquia (onde o olho pousa primeiro); emendas de foto e de gradiente; cheiro de template ou de IA. **Crop do grid**: numa peça 4:5 (1080×1350) o Instagram exibe 1:1 no perfil e corta **135px em cima e 135px embaixo** — logo, CTA e qualquer texto essencial têm que caber entre y135 e y1215. Elemento essencial fora dessa faixa é BLOQUEADOR por (g). **Safe zone de story** (1080×1920): a interface do aplicativo cobre cerca de **250px no topo e 250px na base** — nada essencial ali, e o CTA nunca no rodapé absoluto.
|
|
164
|
+
- **BRIEF/VENDA**: a imagem entrega a promessa da copy? (vende a sala e não mostra a sala); a objeção nº 1 do público está tratada?; CTA único e coerente com o funil; preços e dados conferidos contra a fonte.
|
|
165
|
+
|
|
166
|
+
### VÍDEO (reel, ad, story) — âncoras lista A
|
|
167
|
+
- ★ **HOOK/ROTEIRO**: os 3 segundos iniciais seguram?; promessa contra o corte final; CTA; duração contra o canal.
|
|
168
|
+
- **MARCA/TÉCNICA**: logo, legendas (sincronia e ortografia), proporção e formato, áudio; extrair frames com `ffmpeg -i <v> -vf fps=1/3` quando precisar ver.
|
|
169
|
+
|
|
170
|
+
### RELATÓRIO (performance, financeiro) — âncoras lista A
|
|
171
|
+
- ★ **DADOS**: números conferidos contra a fonte crua (export, API, planilha); as somas fecham; períodos corretos.
|
|
172
|
+
- **CLAREZA**: quem lê entende sem tradução?; a decisão recomendada está explícita?; zero jargão vazio.
|
|
173
|
+
|
|
174
|
+
### DOCUMENTO (PDF, proposta, contrato, apostila) — âncoras lista A
|
|
175
|
+
- ★ **FATOS**: todo número, preço, nome, data e promessa conferido contra a fonte (contrato, sistema, memória do projeto).
|
|
176
|
+
- **FORMA**: fundo e identidade corretos (do cliente, não de quem produziu); anti-vícios de IA (travessão, "não é X, é Y", negação dramática); ortografia; paginação (rodapé que vira página órfã).
|
|
177
|
+
|
|
178
|
+
### DOCUMENTO TÉCNICO (README, ADR, runbook, relatório técnico) — âncoras lista B
|
|
179
|
+
- ★ **FATOS**: todo comando, caminho, versão, número e afirmação técnica conferido contra a realidade. Comando que não existe mais, flag renomeada, caminho que mudou.
|
|
180
|
+
- **FORMA**: quem vai ler consegue executar sem perguntar nada? Ortografia. E a regra que vale para todo runbook: **onde o documento PEDE, ele deveria VERIFICAR**. Instrução que depende de a pessoa lembrar é instrução que falha; procure toda instrução que poderia virar checagem.
|
|
181
|
+
|
|
182
|
+
### CÓDIGO / SISTEMA (site, app, script, serviço, API, CLI, automação, infraestrutura como código) — âncoras lista B
|
|
183
|
+
- ★ **ADVERSARIAL**: o que quebra. Bugs, estado inconsistente, **segredo exposto no código — inclusive com valor de placeholder, que é BLOQUEADOR pelo item (c) e não IMPORTANTE**, input malicioso, permissão furada, exceção engolida, retry que duplica efeito. **Edge case, um por um, sem agrupar em "edge cases"**: nulo em campo que existe, string vazia, zero, negativo, duplicado, acento e emoji, texto longo demais, lista vazia, concorrência, **data/hora sem fuso** (item b2), **parâmetro em caminho de arquivo sem validação** (item b3), e o mesmo request duas vezes. Testar cada um contra o código, não citar a lista. Em Terraform e config de infra: recurso que o `apply` destrói e recria em vez de alterar, permissão mais ampla do que a necessária, e estado que não é o que o código diz.
|
|
184
|
+
⚠️ Os **três casos de execução obrigatória** das âncoras (nulo em campo que existe, campo ausente, origem sem nenhum registro) valem aqui inteiros. Foi exatamente um deles que passou por duas lentes lendo código e só apareceu quando alguém rodou em pasta vazia e viu código de saída zero com stderr vazio.
|
|
185
|
+
- **USUÁRIO-ZERO**: percorrer o fluxo real de ponta a ponta, rodando ou abrindo de verdade quando possível, e reportar onde trava, engana ou confunde quem não escreveu aquilo.
|
|
186
|
+
|
|
187
|
+
### PIPELINE DE DADOS (DAG, job, transformação, migration) — âncoras lista B
|
|
188
|
+
- ★ **CORREÇÃO DO DADO**: idempotência (rodar duas vezes dá o mesmo resultado?); reprocessamento de janela passada; schema drift e campo novo ou removido na origem; **nulo em campo que existe** — e são três casos distintos, não um: campo ausente é schema drift, origem sem linhas é origem vazia, e este terceiro é o campo presente com valor NULL, que quebra `float()`, `.isoformat()` e todo acesso que presume valor; chave duplicada; registro que chega atrasado; fuso horário e data de corte; particionamento; o que acontece quando a origem vem vazia — **os três são de execução obrigatória pelas âncoras da seção 2, e aqui mais do que em qualquer lugar: job que bate em tabela ou pasta vazia é o cenário mais comum de pipeline, e é justamente o que passa em leitura**; **migration sem caminho de volta** (sem down-script, sem rollback, ou que não pode ser aplicada duas vezes).
|
|
189
|
+
- **CUSTO E ESCALA**: full scan onde daria para particionar; shuffle desnecessário; o que explode quando o volume dobra; job sem timeout e sem limite; leitura repetida do mesmo dado.
|
|
190
|
+
|
|
191
|
+
### CONVENÇÃO (lente extra, obrigatória quando a peça entra num sistema que já existe)
|
|
192
|
+
- **CONVENÇÃO**: a peça segue o padrão que o projeto já estabeleceu (nomenclatura, estrutura de pasta, formato de log, tratamento de erro, índice, link, grade visual)? Peça correta que ignora a convenção do sistema é regressão silenciosa: funciona sozinha e apodrece o conjunto.
|
|
193
|
+
|
|
194
|
+
## 6. Parecer
|
|
195
|
+
|
|
196
|
+
Salvar em `<pasta-da-peça>/_auditoria/AAAA-MM-DD-gate-<slug>.md`. Rodadas seguintes acrescentam no mesmo arquivo.
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
# GATE — <peça> — AAAA-MM-DD — Rodada 1 — faixa VAI SAIR
|
|
200
|
+
sha256: <o hash da peça, gerado DEPOIS da última correção. macOS/Linux: shasum -a 256 arquivo · Windows: Get-FileHash -Algorithm SHA256 arquivo>
|
|
201
|
+
fonte: <âncora do que a peça descreve — git rev-parse --short HEAD, data do export, versão do schema, versão do brandkit, contrato consultado. "N/A — autocontida" só se a peça não referenciar repositório, dataset, config, preço ou versão de terceiro. Na dúvida, não é autocontida. Peça sem controle de versão que lê pasta ou banco externo NÃO é autocontida: ancore no que ela toca — "pasta /dados/entrada em AAAA-MM-DD, schema da tabela X versão N" — e registre a ausência de VCS como achado IMPORTANTE de convenção>
|
|
202
|
+
Preflight: <código: typecheck ok · lint 2 avisos · teste 1 falha | visual: 1080x1350 ok · 1,2 MB · quase-clone dist 14/64 vs slide-2>
|
|
203
|
+
Painel: adversarial ✗ · usuário-zero ✓ — VEREDITO: REPROVADO · nota 3/10
|
|
204
|
+
mudança de faixa: <só quando houve. de LOCAL → VAI SAIR (ou o contrário), motivo, data. Subiu: rodada 1 nova e contador zerado. Desceu: contador segue, escalada pendente segue, e o painel é o da faixa mais rigorosa>
|
|
205
|
+
lente ⭐: <obrigatório da rodada 2 em diante. (1) alguma correção desfaz outra? qual princípio venceu e o que foi sacrificado. (2) que rede de segurança larga foi estreitada, o que ela cobria por acidente, e para onde cada caso vai agora. "Nenhuma rede estreitada" é resposta válida quando for verdade>
|
|
206
|
+
lente ⭐ — resposta de cada auditor: <obrigatório na mesma rodada em que o campo acima existe, UMA LINHA POR LENTE, com o nome da lente: concorda ou contesta o texto acima, e por quê. Sem este bloco preenchido lente a lente, a rodada não fecha: é o que tira a ⭐ da autodeclaração. Não vale uma lente responder pelas outras>
|
|
207
|
+
|
|
208
|
+
| Sev | Lente | Achado | Evidência | Correção |
|
|
209
|
+
|-----|-------|--------|-----------|----------|
|
|
210
|
+
|
|
211
|
+
PRÓXIMA AÇÃO: <corrigir X e reauditar a lente Y, ou LIBERADO>
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Ledger central em `~/.claude/gate/ledger.csv`, criando com cabeçalho se não existir. Colunas:
|
|
215
|
+
`data,peca,tipo,faixa,rodada,bloqueadores,importantes,veredito,bypass`
|
|
216
|
+
|
|
217
|
+
Criar-se-não-existe e acrescentar, idempotente (rodar duas vezes não duplica o cabeçalho):
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# macOS / Linux
|
|
221
|
+
L=~/.claude/gate/ledger.csv; mkdir -p "$(dirname "$L")"
|
|
222
|
+
[ -s "$L" ] || echo 'data,peca,tipo,faixa,rodada,bloqueadores,importantes,veredito,bypass' > "$L"
|
|
223
|
+
echo '2026-01-31,minha-peca,codigo,VAI SAIR,1,0,2,LIBERADO,nao' >> "$L"
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
```powershell
|
|
227
|
+
# Windows (PowerShell). Em cmd.exe o "~" não expande: use %USERPROFILE%\.claude\gate\ledger.csv
|
|
228
|
+
$L = "$env:USERPROFILE\.claude\gate\ledger.csv"
|
|
229
|
+
New-Item -ItemType Directory -Force -Path (Split-Path $L) | Out-Null
|
|
230
|
+
if (-not (Test-Path $L)) { 'data,peca,tipo,faixa,rodada,bloqueadores,importantes,veredito,bypass' | Set-Content $L }
|
|
231
|
+
Add-Content $L '2026-01-31,minha-peca,codigo,VAI SAIR,1,0,2,LIBERADO,nao'
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**O ledger não tem coluna para a lente ⭐, e isso é decisão, não esquecimento.** Acrescentar coluna quebraria a leitura das linhas antigas, e o ganho seria só consulta agregada ("em quantos ciclos houve conflito de correção"). Consequência assumida: essa pergunta só se responde varrendo os pareceres, um por um. Se um dia o volume justificar, a mudança é coluna nova com valor vazio nas linhas velhas — e aí o schema muda de uma vez, documentado aqui.
|
|
235
|
+
|
|
236
|
+
**O hash sai no fim, nunca no meio.** Gerar antes da última correção registra uma versão que não é a que saiu, e aí o re-gate acusa retoque que não houve e ninguém consegue provar qual versão foi usada.
|
|
237
|
+
|
|
238
|
+
**Re-gate por hash:** antes de usar ou enviar uma peça já aprovada, confira o hash contra o do parecer. Mudou significa que a peça foi retocada, e ela reentra no gate.
|
|
239
|
+
|
|
240
|
+
**Re-gate pela fonte** (o hash não cobre isto): confira também a **fonte** atual contra a do parecer. O hash prova que a **peça** não mudou; não prova que o **mundo que ela descreve** continua igual. Um diagnóstico aprovado sobre um repositório que andou 8 commits tem hash idêntico e fatos vencidos, inclusive quando um dos commits implementou uma fatia do próprio documento. Peça igual + fonte diferente não reprova sozinho, mas obriga a reconferir os fatos antes de usar, e a lente ★ FATOS reentra.
|
|
241
|
+
|
|
242
|
+
⚠️ **Isto não é "reabrir ponto resolvido" e não conta para o teto de 2 ciclos.** A proibição da regra de rodada 2+ vale dentro do ciclo corrige-e-reaudita: lá o achado é o mesmo e mudaria só o critério. Aqui o achado é novo, porque o mundo mudou depois do parecer. Reverificação de fato ≠ reabertura de achado, e o auditor da reentrada recebe a peça como rodada 1.
|
|
243
|
+
|
|
244
|
+
⛔ **E só vale para peça APROVADA.** Peça que está no meio do ciclo, ou que reprovou na rodada 3 e está esperando escalar, **não** pode ser rotulada como reentrada para zerar o contador. Está escrito na negativa de propósito: sob prazo, essa é a saída mais tentadora do documento inteiro.
|
|
245
|
+
|
|
246
|
+
**Como rotular, e isso não é detalhe:** no cabeçalho do parecer e no ledger, escreva `Rodada 1 (reentrada por fonte, AAAA-MM-DD)`. O parecer continua no mesmo arquivo, então a tentação é numerar em sequência ("Rodada 3") — e aí a regra de rodada 2+ volta a valer sobre o auditor, que é exatamente o que este parágrafo existe para impedir.
|
|
247
|
+
|
|
248
|
+
⚠️ **É em documento que isso dói.** Código e pipeline avisam sozinhos: se o mundo muda, o teste quebra e alguém percebe. Documento envelhece em silêncio — nada quebra, nada avisa, e a próxima pessoa executa em cima de uma descrição que já não vale.
|
|
249
|
+
|
|
250
|
+
**Calibração:** se quase tudo passa de primeira nas últimas 10 peças, ou se mais de 20% dos achados são descartados, a rubrica está frouxa ou chata demais. Diga, e ela é recalibrada.
|
|
251
|
+
|
|
252
|
+
## 7. Modo lote / ciclo
|
|
253
|
+
|
|
254
|
+
`gate ciclo <pasta>` ou `gate lote <pasta ou lista de arquivos>` — auditar um conjunto de uma vez:
|
|
255
|
+
1. Cada peça roda seu painel normal, em ondas de no máximo 8 auditores simultâneos.
|
|
256
|
+
2. Mais uma lente **CONJUNTO** (um subagente que recebe TODAS as peças) procurando o que só aparece no agregado: quase-clone entre peças, deriva de identidade dentro do ciclo, duplicação entre arquivos, inconsistência de padrão dentro do lote, a mesma correção aplicada de jeitos diferentes em lugares diferentes, buracos contra o calendário ou o escopo planejado, repetição de ângulo.
|
|
257
|
+
3. Parecer consolidado do ciclo em `<pasta>/_auditoria/`.
|
|
258
|
+
|
|
259
|
+
## 8. Válvula de escape
|
|
260
|
+
|
|
261
|
+
"libera sem gate", e só o dono da peça pode dizer isso: grava parecer de uma linha (`LIBERADO SEM GATE por ordem do dono — <motivo, se houver>`), grava a linha no ledger com `bypass=sim`, e — **se os hooks opcionais da seção 10 estiverem ativados** — limpa o flag com `rm -f /tmp/gate-dirty-*`, igual ao passo 6 da seção 3. Depois segue. Sem discussão, com rastro.
|
|
262
|
+
|
|
263
|
+
⚠️ **A limpeza no bypass não é detalhe:** sem ela, quem ativou o hook e usa a válvula fica com a sessão marcada como suja para sempre, o encerramento continua bloqueado, e a saída que a pessoa vai achar é desativar o hook — ou seja, a válvula de escape do gate viraria a porta de saída do enforcement inteiro.
|
|
264
|
+
|
|
265
|
+
## 9. Degradações (nunca abortar por falta de peça)
|
|
266
|
+
|
|
267
|
+
- **Sem subagente disponível:** rodar as lentes em sequência no próprio turno. O gate degradado é melhor que gate nenhum, e por isso esta degradação continua permitida — mas **ela quebra a regra dura nº 1 para o painel inteiro**, não só para a lente ⭐: quem produziu passa a auditar o que produziu, e audita a intenção em vez do resultado. Então **é obrigatório declarar isso no parecer**, na linha `isolamento: comprometido — sem subagente, painel rodou no turno de quem produziu`. Sem essa linha, um parecer feito sem auditor nenhum fica indistinguível de um feito com auditor de verdade, e é o parecer que serve de prova depois. Achado que sobreviver a um painel degradado vale menos, e quem ler precisa saber disso.
|
|
268
|
+
- **Toolchain do projeto inexistente, ou `preflight.py` falhando** (sem Python, sem PIL): registrar no parecer e ir direto para o painel.
|
|
269
|
+
- **Sem brandkit, briefing, README ou convenção escrita:** regra dura 2 — registra como IMPORTANTE, não trava, e audita a peça isolada.
|
|
270
|
+
|
|
271
|
+
## 10. Garantia dura, OPCIONAL (hooks)
|
|
272
|
+
|
|
273
|
+
**Enforcement honesto, em uma frase:** o único bloqueio real deste gate é o hook — e ele **não vem ativado**. Todo o resto deste documento é instrução de prompt, ou seja, **depende de você lembrar de rodar o gate.** Pela régua deste próprio documento, isso é o defeito que a lente DOCUMENTO TÉCNICO manda procurar: instrução que depende de lembrar.
|
|
274
|
+
|
|
275
|
+
Os dois scripts **viajam junto com esta skill**, inertes, na pasta `hooks/` ao lado deste arquivo — depois de instalada, `~/.claude/skills/gate/hooks/`:
|
|
276
|
+
|
|
277
|
+
| Arquivo | Evento | O que faz |
|
|
278
|
+
|---|---|---|
|
|
279
|
+
| `gate-dirty.sh` | `PostToolUse` em `Write` ou `Edit` | marca a sessão como suja ao escrever entregável (`touch /tmp/gate-dirty-<sessão>`). Cobre mídia e documento (`.png .jpg .jpeg .webp .svg .pdf .html .htm .mp4 .mov`) **e** código, pipeline e documento técnico (`.py .js .jsx .ts .tsx .sql .yaml .yml .json .sh .md`). Ignora parecer, config, scratchpad, memória, diário, `node_modules`, `.git` e pastas de build — a lista de exclusão roda ANTES da de extensão, senão `.md` de memória dispararia o tempo todo e o hook acabaria desativado |
|
|
280
|
+
| `gate-stop.sh` | `Stop` | barra o encerramento **uma** vez se a sessão está suja e sem parecer; anti-loop por `stop_hook_active` |
|
|
281
|
+
|
|
282
|
+
O flag é removido ao fechar o parecer (passo 6 da seção 3) ou no bypass (seção 8).
|
|
283
|
+
|
|
284
|
+
⚠️ **Os dois dependem de `python3` para ler o JSON do evento, e falham ABERTO de propósito:** sem Python, as variáveis saem vazias e o script sai por `exit 0` — o gate perde o enforcement, e nunca o contrário, que travaria o encerramento de toda sessão sem saída. Verifique você mesmo antes de confiar: `bash -n` nos dois, e um evento de mentira por `stdin`.
|
|
285
|
+
|
|
286
|
+
**Ativação — acréscimo ao `settings.json`, nunca substituição.** O arquivo é seu e provavelmente já tem hooks de outras coisas. São dois casos, e o errado apaga configuração em silêncio:
|
|
287
|
+
|
|
288
|
+
- **Se `~/.claude/settings.json` NÃO tem bloco `hooks`:** cole o bloco inteiro abaixo como uma chave nova do objeto raiz.
|
|
289
|
+
- **Se JÁ tem:** não cole a chave `hooks` nem substitua o array `PostToolUse` inteiro. **acrescente aos arrays que já estão lá**, preservando o que existe — é este objeto que entra em `PostToolUse`:
|
|
290
|
+
|
|
291
|
+
```json
|
|
292
|
+
{"matcher": "Write|Edit", "hooks": [{"type": "command", "command": "bash ~/.claude/skills/gate/hooks/gate-dirty.sh"}]}
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
e este em `Stop` (criando o array só se ele ainda não existir):
|
|
296
|
+
|
|
297
|
+
```json
|
|
298
|
+
{"hooks": [{"type": "command", "command": "bash ~/.claude/skills/gate/hooks/gate-stop.sh"}]}
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
```json
|
|
302
|
+
"hooks": {
|
|
303
|
+
"PostToolUse": [{"matcher": "Write|Edit", "hooks": [{"type": "command", "command": "bash ~/.claude/skills/gate/hooks/gate-dirty.sh"}]}],
|
|
304
|
+
"Stop": [{"hooks": [{"type": "command", "command": "bash ~/.claude/skills/gate/hooks/gate-stop.sh"}]}]
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
⚠️ **Ativar SÓ depois de testar em sessão descartável**, porque hook mal configurado trava o encerramento de TODA sessão. Antes de editar, copie o `settings.json`. O teste passou quando os **quatro** acontecerem, nesta ordem: (1) numa sessão nova, escrever um arquivo de entregável cria `/tmp/gate-dirty-*`; (2) tentar encerrar sem parecer é bloqueado UMA vez, com mensagem legível; (3) fechar um parecer, ou dar bypass, apaga o flag e o encerramento passa; (4) **os hooks que já existiam antes continuam disparando** — rode uma ação que acione cada um deles e confirme. O passo 4 existe porque os três primeiros passam mesmo que o merge tenha apagado a configuração anterior, e essa perda acontece fora da sessão descartável. Falhou qualquer um dos quatro: restaure a cópia do `settings.json` antes de fechar a sessão.
|
|
309
|
+
|
|
310
|
+
⛔ **Eles não rodam em Windows corporativo com política gerenciada**, porque dependem de shell script — nessa máquina o gate segue dependendo da memória de quem opera, e essa é a consequência honesta.
|
|
311
|
+
|
|
312
|
+
**Mitigação sem hook:** amarrar o gate a um momento que já existe no seu fluxo, em vez de a uma lembrança. Antes de apresentar como pronto, ou antes de abrir PR, são os candidatos naturais, porque já são paradas conscientes. Se valer o enforcement duro e portável, o caminho é um hook de `pre-commit` do próprio git, que não depende do shell da máquina.
|
|
313
|
+
|
|
314
|
+
## 11. Fase 2 (não fazer sem o dono pedir)
|
|
315
|
+
|
|
316
|
+
- **Kit de primeira rodada:** arquivo de colagem com esta skill embutida + uma peça de exemplo propositalmente defeituosa + o resultado esperado ("deve sair REPROVADO com 2 bloqueadores"), para quem instala VER o gate funcionar em vez de ler que ele funciona.
|
|
317
|
+
- **Plugin com os hooks já montados**, só como caminho avançado para quem usa git — nunca como o caminho padrão de instalação.
|
|
318
|
+
- **Dashboard do ledger**, no painel interno de quem opera: aprovação de primeira, ciclos por peça, bloqueadores por tipo.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Gate — PostToolUse (Write|Edit): marca a sessao como "suja" quando um entregavel e escrito.
|
|
3
|
+
# OPCIONAL: nao faz nada ate voce registra-lo no settings.json (secao 10 da SKILL.md).
|
|
4
|
+
# Silencioso. O flag e limpo pela skill gate ao fechar o parecer (ou no "libera sem gate").
|
|
5
|
+
# Sem python3 na maquina, as variaveis saem vazias e o script sai por exit 0: falha ABERTA.
|
|
6
|
+
INPUT=$(cat)
|
|
7
|
+
FP=$(printf '%s' "$INPUT" | python3 -c 'import sys,json; d=json.load(sys.stdin); print((d.get("tool_input") or {}).get("file_path",""))' 2>/dev/null)
|
|
8
|
+
SID=$(printf '%s' "$INPUT" | python3 -c 'import sys,json; print(json.load(sys.stdin).get("session_id",""))' 2>/dev/null)
|
|
9
|
+
[ -z "$FP" ] && exit 0
|
|
10
|
+
[ -z "$SID" ] && exit 0
|
|
11
|
+
|
|
12
|
+
# O session_id vem de fora e entra num caminho de arquivo. Sem esta guarda, um
|
|
13
|
+
# valor como "sub/../fora/PWNED" escreve fora do namespace /tmp/gate-dirty-*
|
|
14
|
+
# (path traversal confirmado por execucao no gate de 22/08/2026). E o item (b3)
|
|
15
|
+
# das ancoras da propria skill: parametro em caminho de arquivo sem validacao.
|
|
16
|
+
# Valor invalido sai por exit 0 e NAO marca: falha ABERTA, igual ao resto.
|
|
17
|
+
case "$SID" in
|
|
18
|
+
*[!A-Za-z0-9_-]*) exit 0 ;;
|
|
19
|
+
esac
|
|
20
|
+
|
|
21
|
+
# nunca marcar: parecer, config, scratchpad, memoria, diario, dependencia, build
|
|
22
|
+
# (a exclusao vem ANTES da lista de extensoes de proposito: .md de memoria e de
|
|
23
|
+
# diario sao o ruido que faria o hook disparar o tempo todo e ser desativado)
|
|
24
|
+
case "$FP" in
|
|
25
|
+
*_auditoria*|*/.claude/*|*scratchpad*|*/memory/*|*/memoria/*|*historico.md|\
|
|
26
|
+
*/node_modules/*|*/.git/*|*/dist/*|*/build/*|*/.next/*|*/venv/*|*/__pycache__/*)
|
|
27
|
+
exit 0 ;;
|
|
28
|
+
esac
|
|
29
|
+
|
|
30
|
+
# extensoes de entregavel — cobrem os tipos que o painel da skill audita:
|
|
31
|
+
# peca visual e midia, documento, codigo, pipeline e documento tecnico
|
|
32
|
+
case "$FP" in
|
|
33
|
+
*.png|*.jpg|*.jpeg|*.webp|*.svg|*.pdf|*.html|*.htm|*.mp4|*.mov|\
|
|
34
|
+
*.py|*.js|*.jsx|*.ts|*.tsx|*.sql|*.yaml|*.yml|*.json|*.sh|*.md)
|
|
35
|
+
# o destino nao pode ser symlink: com um session_id valido, um link
|
|
36
|
+
# pre-criado faria o touch seguir pra fora do namespace (TOCTOU).
|
|
37
|
+
[ -L "/tmp/gate-dirty-$SID" ] && exit 0
|
|
38
|
+
touch "/tmp/gate-dirty-$SID" ;;
|
|
39
|
+
esac
|
|
40
|
+
exit 0
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Gate — Stop: bloqueia o encerramento UMA vez se a sessao tocou entregavel sem auditar.
|
|
3
|
+
# OPCIONAL: nao faz nada ate voce registra-lo no settings.json (secao 10 da SKILL.md).
|
|
4
|
+
# Anti-loop: com stop_hook_active=true (ja estamos num bloqueio), libera sempre.
|
|
5
|
+
# Sem python3 na maquina, as variaveis saem vazias e o script sai por exit 0: falha ABERTA
|
|
6
|
+
# (o gate deixa de bloquear; nunca o contrario, que travaria o encerramento pra sempre).
|
|
7
|
+
INPUT=$(cat)
|
|
8
|
+
ACTIVE=$(printf '%s' "$INPUT" | python3 -c 'import sys,json; print(str(json.load(sys.stdin).get("stop_hook_active", False)).lower())' 2>/dev/null)
|
|
9
|
+
SID=$(printf '%s' "$INPUT" | python3 -c 'import sys,json; print(json.load(sys.stdin).get("session_id",""))' 2>/dev/null)
|
|
10
|
+
|
|
11
|
+
[ "$ACTIVE" = "true" ] && exit 0
|
|
12
|
+
[ -z "$SID" ] && exit 0
|
|
13
|
+
|
|
14
|
+
# O session_id vem de fora e entra num caminho de arquivo. Sem esta guarda, um
|
|
15
|
+
# valor como "sub/../fora/PWNED" escreve fora do namespace /tmp/gate-dirty-*
|
|
16
|
+
# (path traversal confirmado por execucao no gate de 22/08/2026). E o item (b3)
|
|
17
|
+
# das ancoras da propria skill: parametro em caminho de arquivo sem validacao.
|
|
18
|
+
# Valor invalido sai por exit 0 e NAO marca: falha ABERTA, igual ao resto.
|
|
19
|
+
case "$SID" in
|
|
20
|
+
*[!A-Za-z0-9_-]*) exit 0 ;;
|
|
21
|
+
esac
|
|
22
|
+
|
|
23
|
+
# mesma guarda do gate-dirty: link no lugar do flag nao vale como flag.
|
|
24
|
+
[ -L "/tmp/gate-dirty-$SID" ] && exit 0
|
|
25
|
+
if [ -f "/tmp/gate-dirty-$SID" ]; then
|
|
26
|
+
cat <<'JSON'
|
|
27
|
+
{"decision":"block","reason":"Gate: entregavel criado ou alterado nesta sessao sem auditoria. Rode a skill gate na peca (fechar o parecer remove o flag) ou, se o dono mandou 'libera sem gate', registre o bypass no ledger e remova /tmp/gate-dirty-<session_id>."}
|
|
28
|
+
JSON
|
|
29
|
+
exit 0
|
|
30
|
+
fi
|
|
31
|
+
exit 0
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Gate — preflight determinístico OPCIONAL (roda ANTES do painel de auditores).
|
|
3
|
+
|
|
4
|
+
OPCIONAL de propósito: exige Python 3 e, para imagem, Pillow. Se não existir,
|
|
5
|
+
falhar ou não houver Python na máquina, registre no parecer e siga direto para o
|
|
6
|
+
painel — o caminho em texto da seção 4 da SKILL.md continua valendo sozinho.
|
|
7
|
+
|
|
8
|
+
Uso: python3 preflight.py <peça> [pasta-do-ciclo]
|
|
9
|
+
|
|
10
|
+
Checa de graça o que não precisa de LLM:
|
|
11
|
+
- sha256 da peça (vai no parecer)
|
|
12
|
+
- imagem: dimensões vs formatos padrão de feed, modo de cor, peso
|
|
13
|
+
- quase-clone: hash perceptual (aHash) contra as outras imagens do ciclo
|
|
14
|
+
- html: assets locais referenciados que não existem
|
|
15
|
+
- pdf: peso
|
|
16
|
+
|
|
17
|
+
Saída: linhas [OK] / [AVISO] / [SUSPEITA] / [ERRO] pra colar no parecer.
|
|
18
|
+
"""
|
|
19
|
+
import sys, os, glob, hashlib, re, warnings
|
|
20
|
+
|
|
21
|
+
warnings.filterwarnings("ignore")
|
|
22
|
+
|
|
23
|
+
FEED_SIZES = {(1080, 1350), (1080, 1920), (1080, 1080), (1920, 1080), (1200, 630)}
|
|
24
|
+
IMG_EXTS = (".png", ".jpg", ".jpeg", ".webp")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def sha256(path):
|
|
28
|
+
h = hashlib.sha256()
|
|
29
|
+
with open(path, "rb") as f:
|
|
30
|
+
for chunk in iter(lambda: f.read(1 << 20), b""):
|
|
31
|
+
h.update(chunk)
|
|
32
|
+
return h.hexdigest()
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def ahash(im, size=8):
|
|
36
|
+
im = im.convert("L").resize((size, size))
|
|
37
|
+
px = list(im.getdata())
|
|
38
|
+
avg = sum(px) / len(px)
|
|
39
|
+
return "".join("1" if p > avg else "0" for p in px)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def hamming(a, b):
|
|
43
|
+
return sum(x != y for x, y in zip(a, b))
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def check_image(path, ciclo_dir, out):
|
|
47
|
+
try:
|
|
48
|
+
from PIL import Image
|
|
49
|
+
except ImportError:
|
|
50
|
+
out.append("[AVISO] PIL/Pillow ausente — checks de imagem pulados (painel cobre)")
|
|
51
|
+
return
|
|
52
|
+
im = Image.open(path)
|
|
53
|
+
w, h = im.size
|
|
54
|
+
if (w, h) in FEED_SIZES:
|
|
55
|
+
out.append(f"[OK] dimensões {w}x{h} (formato padrão)")
|
|
56
|
+
else:
|
|
57
|
+
out.append(f"[AVISO] dimensões {w}x{h} fora dos formatos padrão de feed {sorted(FEED_SIZES)}")
|
|
58
|
+
if im.mode == "CMYK":
|
|
59
|
+
out.append("[AVISO] modo CMYK — Instagram/web espera RGB")
|
|
60
|
+
mb = os.path.getsize(path) / 1e6
|
|
61
|
+
out.append(f"[OK] peso {mb:.1f} MB" if mb < 8 else f"[AVISO] peso {mb:.1f} MB (>8MB, Instagram pode recomprimir feio)")
|
|
62
|
+
|
|
63
|
+
# quase-clone contra as outras imagens do ciclo
|
|
64
|
+
if ciclo_dir and os.path.isdir(ciclo_dir):
|
|
65
|
+
mine = ahash(im)
|
|
66
|
+
alvo = os.path.realpath(path)
|
|
67
|
+
for other in sorted(glob.glob(os.path.join(ciclo_dir, "**", "*.*"), recursive=True)):
|
|
68
|
+
if not other.lower().endswith(IMG_EXTS):
|
|
69
|
+
continue
|
|
70
|
+
if os.path.realpath(other) == alvo or "_auditoria" in other:
|
|
71
|
+
continue
|
|
72
|
+
try:
|
|
73
|
+
d = hamming(mine, ahash(Image.open(other)))
|
|
74
|
+
except Exception:
|
|
75
|
+
continue
|
|
76
|
+
if d <= 6:
|
|
77
|
+
out.append(f"[SUSPEITA] QUASE-CLONE FORTE (dist {d}/64) vs {other}")
|
|
78
|
+
elif d <= 12:
|
|
79
|
+
out.append(f"[SUSPEITA] composição muito parecida (dist {d}/64) vs {other}")
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def check_html(path, out):
|
|
83
|
+
html = open(path, encoding="utf-8", errors="ignore").read()
|
|
84
|
+
base = os.path.dirname(os.path.abspath(path))
|
|
85
|
+
faltando = []
|
|
86
|
+
for ref in re.findall(r'(?:src|href)=["\']([^"\']+)["\']', html):
|
|
87
|
+
if ref.startswith(("http", "//", "#", "data:", "mailto:", "tel:")):
|
|
88
|
+
continue
|
|
89
|
+
if not os.path.exists(os.path.join(base, ref.split("?")[0])):
|
|
90
|
+
faltando.append(ref)
|
|
91
|
+
if faltando:
|
|
92
|
+
out.append(f"[AVISO] assets locais inexistentes: {faltando[:10]}")
|
|
93
|
+
else:
|
|
94
|
+
out.append("[OK] todos os assets locais existem")
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def main():
|
|
98
|
+
if len(sys.argv) < 2:
|
|
99
|
+
print("uso: preflight.py <peça> [pasta-do-ciclo]")
|
|
100
|
+
sys.exit(1)
|
|
101
|
+
path = sys.argv[1]
|
|
102
|
+
ciclo = sys.argv[2] if len(sys.argv) > 2 else os.path.dirname(os.path.abspath(path))
|
|
103
|
+
out = []
|
|
104
|
+
if not os.path.exists(path):
|
|
105
|
+
print(f"[ERRO] peça não existe: {path}")
|
|
106
|
+
sys.exit(1)
|
|
107
|
+
# Uma PASTA é a leitura mais natural de "a peça" para quem tem um carrossel,
|
|
108
|
+
# e era a que quebrava com traceback cru. Sai com mensagem legível e exit 1:
|
|
109
|
+
# trocar traceback por texto NÃO pode virar trocar falha por silêncio.
|
|
110
|
+
if os.path.isdir(path):
|
|
111
|
+
print(f"[ERRO] a peça é uma pasta: {path} — rode uma vez por arquivo "
|
|
112
|
+
f"(o segundo argumento é que recebe a pasta do ciclo)")
|
|
113
|
+
sys.exit(1)
|
|
114
|
+
ext = os.path.splitext(path)[1].lower()
|
|
115
|
+
try:
|
|
116
|
+
out.append(f"sha256: {sha256(path)}")
|
|
117
|
+
if ext in IMG_EXTS:
|
|
118
|
+
check_image(path, ciclo, out)
|
|
119
|
+
elif ext in (".html", ".htm"):
|
|
120
|
+
check_html(path, out)
|
|
121
|
+
elif ext == ".pdf":
|
|
122
|
+
mb = os.path.getsize(path) / 1e6
|
|
123
|
+
out.append(f"[OK] PDF {mb:.1f} MB" if mb < 15 else f"[AVISO] PDF {mb:.1f} MB (pesado pra WhatsApp/email)")
|
|
124
|
+
else:
|
|
125
|
+
out.append(f"[OK] extensão {ext}: sem checks mecânicos, direto pro painel")
|
|
126
|
+
except Exception as e:
|
|
127
|
+
out.append(f"[ERRO] preflight falhou ({e}) — seguir pro painel mesmo assim")
|
|
128
|
+
print("\n".join(out))
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
if __name__ == "__main__":
|
|
132
|
+
main()
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lp-cinematico
|
|
3
|
+
description: Gera landing page cinematográfica premium (Vite + React + TypeScript + Tailwind v4), com vídeo em scroll-scrub no hero, efeito liquid-glass e seções editoriais. Use quando o usuário pedir landing page, LP, site de produto, página de vendas, site institucional de alto padrão visual, ou falar em scroll-scrub, parallax de vídeo ou página estilo Apple e Stripe.
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# MEGA-PROMPT TEMPLATE — One-Shot Cinematic Landing Page (Video Scroll-Scrub)
|
|
2
7
|
|
|
3
8
|
> Fill every `{{PLACEHOLDER}}` below, then paste the whole document into your generating model (Lovable, v0, Cursor, Claude, etc.) as a SINGLE prompt. Do NOT split it. The model must produce a working Vite app in one shot.
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: roteiro-video
|
|
3
|
+
description: Escreve roteiro de vídeo curto (Reels, TikTok, Shorts) e longo (YouTube) com estrutura de retenção e conversão: gancho, corpo e CTA. Use quando o usuário pedir roteiro de vídeo, script de Reels, ideia de Shorts, gancho de abertura, estrutura de um vídeo, o que falar na câmera, roteiro de YouTube ou roteiro para gravar em campo.
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# Skill: Roteiro de Vídeo — Iron Edge
|
|
2
7
|
|
|
3
8
|
> Gera roteiros de vídeo curto (Reels, TikTok, YouTube Shorts) e vídeo longo (YouTube) com estrutura comprovada de retenção e conversão.
|