mega-brain-ai 1.3.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/.antigravity/README.md +46 -0
- package/.antigravity/rules/.gitkeep +0 -0
- package/.antigravity/rules/mega-brain.md +39 -0
- package/.claude/CLAUDE.md +172 -0
- package/.claude/agents.yaml +44 -0
- package/.claude/commands/agents.md +161 -0
- package/.claude/commands/ask.md +117 -0
- package/.claude/commands/benchmark.md +224 -0
- package/.claude/commands/chat.md +343 -0
- package/.claude/commands/compare.md +116 -0
- package/.claude/commands/conclave.md +196 -0
- package/.claude/commands/config.md +133 -0
- package/.claude/commands/create-agent.md +467 -0
- package/.claude/commands/debate.md +159 -0
- package/.claude/commands/documentation/create-architecture-documentation.md +175 -0
- package/.claude/commands/dossiers.md +180 -0
- package/.claude/commands/evolve.md +223 -0
- package/.claude/commands/extract-dna.md +172 -0
- package/.claude/commands/extract-knowledge.md +507 -0
- package/.claude/commands/gsd/add-phase.md +43 -0
- package/.claude/commands/gsd/add-tests.md +41 -0
- package/.claude/commands/gsd/add-todo.md +47 -0
- package/.claude/commands/gsd/audit-milestone.md +36 -0
- package/.claude/commands/gsd/check-todos.md +45 -0
- package/.claude/commands/gsd/cleanup.md +18 -0
- package/.claude/commands/gsd/complete-milestone.md +136 -0
- package/.claude/commands/gsd/debug.md +167 -0
- package/.claude/commands/gsd/discuss-phase.md +83 -0
- package/.claude/commands/gsd/execute-phase.md +41 -0
- package/.claude/commands/gsd/health.md +22 -0
- package/.claude/commands/gsd/help.md +22 -0
- package/.claude/commands/gsd/insert-phase.md +32 -0
- package/.claude/commands/gsd/join-discord.md +18 -0
- package/.claude/commands/gsd/list-phase-assumptions.md +46 -0
- package/.claude/commands/gsd/map-codebase.md +71 -0
- package/.claude/commands/gsd/new-milestone.md +44 -0
- package/.claude/commands/gsd/new-project.md +42 -0
- package/.claude/commands/gsd/pause-work.md +38 -0
- package/.claude/commands/gsd/plan-milestone-gaps.md +34 -0
- package/.claude/commands/gsd/plan-phase.md +45 -0
- package/.claude/commands/gsd/progress.md +24 -0
- package/.claude/commands/gsd/quick.md +41 -0
- package/.claude/commands/gsd/reapply-patches.md +110 -0
- package/.claude/commands/gsd/remove-phase.md +31 -0
- package/.claude/commands/gsd/research-phase.md +189 -0
- package/.claude/commands/gsd/resume-work.md +40 -0
- package/.claude/commands/gsd/set-profile.md +34 -0
- package/.claude/commands/gsd/settings.md +36 -0
- package/.claude/commands/gsd/update.md +37 -0
- package/.claude/commands/gsd/verify-work.md +38 -0
- package/.claude/commands/inbox.md +296 -0
- package/.claude/commands/ingest-empresa.md +191 -0
- package/.claude/commands/ingest.md +183 -0
- package/.claude/commands/jarvis-briefing.md +67 -0
- package/.claude/commands/jarvis-control.md +169 -0
- package/.claude/commands/jarvis-full.md +182 -0
- package/.claude/commands/jarvis.md +212 -0
- package/.claude/commands/ler-drive.md +212 -0
- package/.claude/commands/log.md +158 -0
- package/.claude/commands/loop.md +133 -0
- package/.claude/commands/loops.md +73 -0
- package/.claude/commands/mission-autopilot.md +538 -0
- package/.claude/commands/mission.md +353 -0
- package/.claude/commands/process-inbox.md +148 -0
- package/.claude/commands/process-jarvis.md +3036 -0
- package/.claude/commands/process-video.md +131 -0
- package/.claude/commands/rag-search.md +78 -0
- package/.claude/commands/resume.md +33 -0
- package/.claude/commands/save.md +38 -0
- package/.claude/commands/scan-inbox.md +125 -0
- package/.claude/commands/setup.md +99 -0
- package/.claude/commands/system-digest.md +243 -0
- package/.claude/commands/verify.md +182 -0
- package/.claude/commands/view-dna.md +169 -0
- package/.claude/get-shit-done/VERSION +1 -0
- package/.claude/get-shit-done/bin/gsd-tools.cjs +588 -0
- package/.claude/get-shit-done/bin/lib/commands.cjs +553 -0
- package/.claude/get-shit-done/bin/lib/config.cjs +162 -0
- package/.claude/get-shit-done/bin/lib/core.cjs +411 -0
- package/.claude/get-shit-done/bin/lib/frontmatter.cjs +299 -0
- package/.claude/get-shit-done/bin/lib/init.cjs +710 -0
- package/.claude/get-shit-done/bin/lib/milestone.cjs +216 -0
- package/.claude/get-shit-done/bin/lib/phase.cjs +871 -0
- package/.claude/get-shit-done/bin/lib/roadmap.cjs +298 -0
- package/.claude/get-shit-done/bin/lib/state.cjs +679 -0
- package/.claude/get-shit-done/bin/lib/template.cjs +222 -0
- package/.claude/get-shit-done/bin/lib/verify.cjs +773 -0
- package/.claude/get-shit-done/references/checkpoints.md +776 -0
- package/.claude/get-shit-done/references/continuation-format.md +249 -0
- package/.claude/get-shit-done/references/decimal-phase-calculation.md +65 -0
- package/.claude/get-shit-done/references/git-integration.md +248 -0
- package/.claude/get-shit-done/references/git-planning-commit.md +38 -0
- package/.claude/get-shit-done/references/model-profile-resolution.md +34 -0
- package/.claude/get-shit-done/references/model-profiles.md +92 -0
- package/.claude/get-shit-done/references/phase-argument-parsing.md +61 -0
- package/.claude/get-shit-done/references/planning-config.md +196 -0
- package/.claude/get-shit-done/references/questioning.md +145 -0
- package/.claude/get-shit-done/references/tdd.md +263 -0
- package/.claude/get-shit-done/references/ui-brand.md +160 -0
- package/.claude/get-shit-done/references/verification-patterns.md +612 -0
- package/.claude/get-shit-done/templates/DEBUG.md +164 -0
- package/.claude/get-shit-done/templates/UAT.md +247 -0
- package/.claude/get-shit-done/templates/VALIDATION.md +76 -0
- package/.claude/get-shit-done/templates/codebase/architecture.md +255 -0
- package/.claude/get-shit-done/templates/codebase/concerns.md +310 -0
- package/.claude/get-shit-done/templates/codebase/conventions.md +307 -0
- package/.claude/get-shit-done/templates/codebase/integrations.md +280 -0
- package/.claude/get-shit-done/templates/codebase/stack.md +186 -0
- package/.claude/get-shit-done/templates/codebase/structure.md +285 -0
- package/.claude/get-shit-done/templates/codebase/testing.md +480 -0
- package/.claude/get-shit-done/templates/config.json +37 -0
- package/.claude/get-shit-done/templates/context.md +283 -0
- package/.claude/get-shit-done/templates/continue-here.md +78 -0
- package/.claude/get-shit-done/templates/debug-subagent-prompt.md +91 -0
- package/.claude/get-shit-done/templates/discovery.md +146 -0
- package/.claude/get-shit-done/templates/milestone-archive.md +123 -0
- package/.claude/get-shit-done/templates/milestone.md +115 -0
- package/.claude/get-shit-done/templates/phase-prompt.md +569 -0
- package/.claude/get-shit-done/templates/planner-subagent-prompt.md +117 -0
- package/.claude/get-shit-done/templates/project.md +184 -0
- package/.claude/get-shit-done/templates/requirements.md +231 -0
- package/.claude/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
- package/.claude/get-shit-done/templates/research-project/FEATURES.md +147 -0
- package/.claude/get-shit-done/templates/research-project/PITFALLS.md +200 -0
- package/.claude/get-shit-done/templates/research-project/STACK.md +120 -0
- package/.claude/get-shit-done/templates/research-project/SUMMARY.md +170 -0
- package/.claude/get-shit-done/templates/research.md +552 -0
- package/.claude/get-shit-done/templates/retrospective.md +54 -0
- package/.claude/get-shit-done/templates/roadmap.md +202 -0
- package/.claude/get-shit-done/templates/state.md +176 -0
- package/.claude/get-shit-done/templates/summary-complex.md +59 -0
- package/.claude/get-shit-done/templates/summary-minimal.md +41 -0
- package/.claude/get-shit-done/templates/summary-standard.md +48 -0
- package/.claude/get-shit-done/templates/summary.md +248 -0
- package/.claude/get-shit-done/templates/user-setup.md +311 -0
- package/.claude/get-shit-done/templates/verification-report.md +322 -0
- package/.claude/get-shit-done/workflows/add-phase.md +111 -0
- package/.claude/get-shit-done/workflows/add-tests.md +350 -0
- package/.claude/get-shit-done/workflows/add-todo.md +157 -0
- package/.claude/get-shit-done/workflows/audit-milestone.md +297 -0
- package/.claude/get-shit-done/workflows/check-todos.md +176 -0
- package/.claude/get-shit-done/workflows/cleanup.md +152 -0
- package/.claude/get-shit-done/workflows/complete-milestone.md +763 -0
- package/.claude/get-shit-done/workflows/diagnose-issues.md +219 -0
- package/.claude/get-shit-done/workflows/discovery-phase.md +289 -0
- package/.claude/get-shit-done/workflows/discuss-phase.md +542 -0
- package/.claude/get-shit-done/workflows/execute-phase.md +449 -0
- package/.claude/get-shit-done/workflows/execute-plan.md +448 -0
- package/.claude/get-shit-done/workflows/health.md +156 -0
- package/.claude/get-shit-done/workflows/help.md +489 -0
- package/.claude/get-shit-done/workflows/insert-phase.md +129 -0
- package/.claude/get-shit-done/workflows/list-phase-assumptions.md +178 -0
- package/.claude/get-shit-done/workflows/map-codebase.md +315 -0
- package/.claude/get-shit-done/workflows/new-milestone.md +382 -0
- package/.claude/get-shit-done/workflows/new-project.md +1116 -0
- package/.claude/get-shit-done/workflows/pause-work.md +122 -0
- package/.claude/get-shit-done/workflows/plan-milestone-gaps.md +274 -0
- package/.claude/get-shit-done/workflows/plan-phase.md +569 -0
- package/.claude/get-shit-done/workflows/progress.md +381 -0
- package/.claude/get-shit-done/workflows/quick.md +453 -0
- package/.claude/get-shit-done/workflows/remove-phase.md +154 -0
- package/.claude/get-shit-done/workflows/research-phase.md +73 -0
- package/.claude/get-shit-done/workflows/resume-project.md +306 -0
- package/.claude/get-shit-done/workflows/set-profile.md +80 -0
- package/.claude/get-shit-done/workflows/settings.md +213 -0
- package/.claude/get-shit-done/workflows/transition.md +544 -0
- package/.claude/get-shit-done/workflows/update.md +219 -0
- package/.claude/get-shit-done/workflows/verify-phase.md +242 -0
- package/.claude/get-shit-done/workflows/verify-work.md +569 -0
- package/.claude/gsd-file-manifest.json +144 -0
- package/.claude/hooks/agent_creation_trigger.py +168 -0
- package/.claude/hooks/agent_index_updater.py +255 -0
- package/.claude/hooks/agent_memory_persister.py +203 -0
- package/.claude/hooks/claude_md_agent_sync.py +162 -0
- package/.claude/hooks/claude_md_guard.py +154 -0
- package/.claude/hooks/continuous_save.py +414 -0
- package/.claude/hooks/creation_validator.py +360 -0
- package/.claude/hooks/enforce_dual_location.py +501 -0
- package/.claude/hooks/enforce_plan_mode.py +220 -0
- package/.claude/hooks/gsd-check-update.js +62 -0
- package/.claude/hooks/gsd-context-monitor.js +122 -0
- package/.claude/hooks/gsd-statusline.js +108 -0
- package/.claude/hooks/inbox_age_alert.py +367 -0
- package/.claude/hooks/ledger_updater.py +303 -0
- package/.claude/hooks/memory_hints_injector.py +251 -0
- package/.claude/hooks/memory_updater.py +202 -0
- package/.claude/hooks/notification_system.py +115 -0
- package/.claude/hooks/pending_tracker.py +188 -0
- package/.claude/hooks/pipeline_checkpoint.py +583 -0
- package/.claude/hooks/post_batch_cascading.py +1740 -0
- package/.claude/hooks/post_tool_use.py +120 -0
- package/.claude/hooks/quality_watchdog.py +394 -0
- package/.claude/hooks/ralph_wiggum.py +286 -0
- package/.claude/hooks/session-source-sync.py +223 -0
- package/.claude/hooks/session_autosave_v2.py +1135 -0
- package/.claude/hooks/session_end.py +203 -0
- package/.claude/hooks/session_start.py +939 -0
- package/.claude/hooks/skill_indexer.py +48 -0
- package/.claude/hooks/skill_router.py +358 -0
- package/.claude/hooks/stop_hook_completeness.py +187 -0
- package/.claude/hooks/user_prompt_submit.py +125 -0
- package/.claude/package.json +1 -0
- package/.claude/rules/ANTHROPIC-STANDARDS.md +384 -0
- package/.claude/rules/CLAUDE-LITE.md +201 -0
- package/.claude/rules/RULE-GROUP-1.md +320 -0
- package/.claude/rules/RULE-GROUP-2.md +307 -0
- package/.claude/rules/RULE-GROUP-3.md +248 -0
- package/.claude/rules/RULE-GROUP-4.md +427 -0
- package/.claude/rules/RULE-GROUP-5.md +388 -0
- package/.claude/rules/RULE-GROUP-6.md +387 -0
- package/.claude/rules/RULE-GSD-MANDATORY.md +106 -0
- package/.claude/rules/agent-cognition.md +779 -0
- package/.claude/rules/agent-integrity.md +692 -0
- package/.claude/rules/epistemic-standards.md +333 -0
- package/.claude/rules/logging.md +53 -0
- package/.claude/rules/mcp-governance.md +128 -0
- package/.claude/rules/pipeline.md +60 -0
- package/.claude/rules/state-management.md +93 -0
- package/.claude/scripts/apply-tags.py +77 -0
- package/.claude/scripts/batch-extract-transcriptions.py +132 -0
- package/.claude/scripts/build-complete-index.py +250 -0
- package/.claude/scripts/build-planilha-index.py +170 -0
- package/.claude/scripts/complete-tag-matching.py +250 -0
- package/.claude/scripts/deduplicate-inbox.py +139 -0
- package/.claude/scripts/docx-xml-extractor.py +141 -0
- package/.claude/scripts/extract-docx-text.py +58 -0
- package/.claude/scripts/extract-single-transcription.py +74 -0
- package/.claude/scripts/extract_docx_from_gdrive.py +77 -0
- package/.claude/scripts/jarvis_orchestrator.py +5 -0
- package/.claude/scripts/organized-downloader.py +246 -0
- package/.claude/scripts/planilha-tagger.py +187 -0
- package/.claude/scripts/revert-tags.py +70 -0
- package/.claude/scripts/source-sync.py +265 -0
- package/.claude/scripts/tag-inbox-files.py +276 -0
- package/.claude/scripts/tag-inbox-v2.py +253 -0
- package/.claude/scripts/test-extraction.py +35 -0
- package/.claude/scripts/test-full-extraction.py +74 -0
- package/.claude/scripts/validate_cascading_integrity.py +409 -0
- package/.claude/settings.json +215 -0
- package/.claude/skills/DETECTION-PROTOCOL.md +217 -0
- package/.claude/skills/README.md +240 -0
- package/.claude/skills/SKILL-REGISTRY.md +283 -0
- package/.claude/skills/SKILL-SUGGESTIONS.md +114 -0
- package/.claude/skills/_TEMPLATES/SKILL-WRITER-GUIDE.md +385 -0
- package/.claude/skills/agent-creation/SKILL.md +374 -0
- package/.claude/skills/ask-company/SKILL.md +198 -0
- package/.claude/skills/brainstorming/SKILL.md +72 -0
- package/.claude/skills/chronicler/SKILL.md +146 -0
- package/.claude/skills/chronicler/chronicler_core.py +468 -0
- package/.claude/skills/code-review/SKILL.md +160 -0
- package/.claude/skills/convert-to-company-docs/SKILL.md +68 -0
- package/.claude/skills/convert-to-company-docs/convert.py +532 -0
- package/.claude/skills/dispatching-parallel-agents/SKILL.md +193 -0
- package/.claude/skills/docs-megabrain/SKILL.md +251 -0
- package/.claude/skills/executing-plans/SKILL.md +114 -0
- package/.claude/skills/executor/SKILL.md +161 -0
- package/.claude/skills/fase-2-5-tagging/SKILL.md +182 -0
- package/.claude/skills/feature-dev/SKILL.md +154 -0
- package/.claude/skills/frontend-design/SKILL.md +165 -0
- package/.claude/skills/gdrive-transcription-downloader/SKILL.md +249 -0
- package/.claude/skills/gemini-fallback/SKILL.md +67 -0
- package/.claude/skills/gemini-fallback/gemini_fetch.py +0 -0
- package/.claude/skills/gha/SKILL.md +96 -0
- package/.claude/skills/gha/gha_diagnostic.py +227 -0
- package/.claude/skills/github-workflow/SKILL.md +190 -0
- package/.claude/skills/hookify/SKILL.md +134 -0
- package/.claude/skills/hybrid-source-reading/SKILL.md +265 -0
- package/.claude/skills/jarvis/SKILL.md +546 -0
- package/.claude/skills/jarvis-briefing/SKILL.md +340 -0
- package/.claude/skills/knowledge-extraction/SKILL.md +318 -0
- package/.claude/skills/ler-planilha/SKILL.md +281 -0
- package/.claude/skills/pipeline-jarvis/SKILL.md +430 -0
- package/.claude/skills/plugin-dev/SKILL.md +176 -0
- package/.claude/skills/pr-review-toolkit/SKILL.md +178 -0
- package/.claude/skills/process-company-inbox/SKILL.md +183 -0
- package/.claude/skills/python-megabrain/SKILL.md +323 -0
- package/.claude/skills/resume/SKILL.md +61 -0
- package/.claude/skills/save/SKILL.md +87 -0
- package/.claude/skills/skill-creator-internal/SKILL.md +186 -0
- package/.claude/skills/skill-writer/SKILL.md +153 -0
- package/.claude/skills/skill-writer/examples.md +191 -0
- package/.claude/skills/skill-writer/troubleshooting.md +205 -0
- package/.claude/skills/smart-download-tagger/SKILL.md +148 -0
- package/.claude/skills/source-sync/SKILL.md +240 -0
- package/.claude/skills/sync-docs/SKILL.md +193 -0
- package/.claude/skills/sync-docs/config.json +37 -0
- package/.claude/skills/sync-docs/gdrive_sync.py +358 -0
- package/.claude/skills/sync-docs/reauth.py +71 -0
- package/.claude/skills/using-superpowers/SKILL.md +105 -0
- package/.claude/skills/verification-before-completion/SKILL.md +130 -0
- package/.claude/skills/verify/SKILL.md +154 -0
- package/.claude/skills/verify/verify_runner.py +0 -0
- package/.claude/skills/verify-6-levels/SKILL.md +234 -0
- package/.claude/skills/writing-plans/SKILL.md +184 -0
- package/.claude/templates/BATCH-LOG-TEMPLATE.md +221 -0
- package/.claudeignore +9 -0
- package/.cursor/agents.yaml +44 -0
- package/.cursor/rules/mega-brain.md +39 -0
- package/.gitattributes +19 -0
- package/.github/CODEOWNERS +8 -0
- package/.github/ISSUE_TEMPLATE/agent.md +96 -0
- package/.github/ISSUE_TEMPLATE/bug.md +67 -0
- package/.github/ISSUE_TEMPLATE/feature.md +56 -0
- package/.github/ISSUE_TEMPLATE/pipeline.md +70 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +30 -0
- package/.github/assets/banner.svg +152 -0
- package/.github/assets/logo-dark.svg +79 -0
- package/.github/assets/social-preview.png +0 -0
- package/.github/layer1-allowlist.txt +196 -0
- package/.github/layer2-manifest.txt +42 -0
- package/.github/layer3-manifest.txt +94 -0
- package/.github/workflows/claude-code-pr.yml +198 -0
- package/.github/workflows/claude-code-review.yml +57 -0
- package/.github/workflows/claude.yml +76 -0
- package/.github/workflows/publish-pro.yml +72 -0
- package/.github/workflows/publish.yml +86 -0
- package/.github/workflows/verification.yml +251 -0
- package/.gitignore +244 -0
- package/.gitleaks.toml +118 -0
- package/.windsurf/agents.yaml +44 -0
- package/.windsurf/rules/mega-brain.md +39 -0
- package/CONTRIBUTING.md +62 -0
- package/QUICK-START.md +231 -0
- package/README.md +168 -0
- package/agents/AGENT-INDEX.yaml +107 -0
- package/agents/MASTER-AGENT.md +612 -0
- package/agents/README.md +48 -0
- package/agents/_templates/INDEX.md +741 -0
- package/agents/_templates/TEMPLATE-AGENT-MD-ULTRA-ROBUSTO-V3.md +2399 -0
- package/agents/boardroom/CHECKLIST-MASTER.md +281 -0
- package/agents/boardroom/INTEGRATION-GUIDE.md +406 -0
- package/agents/boardroom/README.md +238 -0
- package/agents/boardroom/config/BOARDROOM-CONFIG.md +186 -0
- package/agents/boardroom/config/TTS-INTEGRATION.md +258 -0
- package/agents/boardroom/config/VOICE-PROFILES.md +624 -0
- package/agents/boardroom/scripts/audio_generator.py +375 -0
- package/agents/boardroom/scripts/audio_generator_edge.py +353 -0
- package/agents/boardroom/scripts/jarvis_boardroom_hook.py +415 -0
- package/agents/boardroom/scripts/notebooklm_generator.py +578 -0
- package/agents/boardroom/templates/EPISODE-TEMPLATE.md +367 -0
- package/agents/boardroom/templates/scene-templates/SCENE-AGENT-DEBATE.md +252 -0
- package/agents/boardroom/templates/scene-templates/SCENE-COUNCIL.md +270 -0
- package/agents/boardroom/templates/scene-templates/SCENE-DNA-CONSULTATION.md +126 -0
- package/agents/boardroom/templates/scene-templates/SCENE-QUESTION.md +174 -0
- package/agents/boardroom/workflows/WORKFLOW-AUDIO-GENERATION.md +421 -0
- package/agents/conclave/CRITIC.md +197 -0
- package/agents/conclave/DEVILS-ADVOCATE.md +274 -0
- package/agents/conclave/README.md +35 -0
- package/agents/conclave/SYNTHESIZER.md +293 -0
- package/agents/conclave/advogado-do-diabo/AGENT.md +502 -0
- package/agents/conclave/advogado-do-diabo/SOUL.md +100 -0
- package/agents/conclave/critico-metodologico/AGENT.md +683 -0
- package/agents/conclave/critico-metodologico/SOUL.md +107 -0
- package/agents/conclave/sintetizador/AGENT.md +571 -0
- package/agents/conclave/sintetizador/SOUL.md +94 -0
- package/agents/constitution/BASE-CONSTITUTION.md +254 -0
- package/agents/persona-registry.yaml +300 -0
- package/agents/sua-empresa/.gitkeep +0 -0
- package/agents/sua-empresa/README.md +44 -0
- package/agents/sua-empresa/_example/jds/EXAMPLE-JD.md +42 -0
- package/agents/sua-empresa/_example/org/EXAMPLE-ORG.md +32 -0
- package/agents/sua-empresa/_example/roles/EXAMPLE-ROLE.md +38 -0
- package/artifacts/README.md +11 -0
- package/artifacts/canonical/.gitkeep +0 -0
- package/artifacts/chunks/.gitkeep +0 -0
- package/artifacts/insights/.gitkeep +0 -0
- package/artifacts/narratives/.gitkeep +0 -0
- package/bin/cli.js +2 -0
- package/bin/lib/ascii-art.js +202 -0
- package/bin/lib/feature-gate.js +46 -0
- package/bin/lib/installer.js +593 -0
- package/bin/lib/license.js +59 -0
- package/bin/lib/pro-commands.js +75 -0
- package/bin/lib/setup-wizard.js +547 -0
- package/bin/lib/validate-email.js +113 -0
- package/bin/mega-brain.js +136 -0
- package/bin/pre-publish-gate.js +229 -0
- package/bin/push.js +1056 -0
- package/bin/templates/env.example +27 -0
- package/bin/utils/pro-detector.js +50 -0
- package/bin/validate-package.js +190 -0
- package/core/__init__.py +2 -0
- package/core/glossary/INDEX.md +63 -0
- package/core/glossary/digital.md +243 -0
- package/core/glossary/finance.md +49 -0
- package/core/glossary/marketing.md +69 -0
- package/core/glossary/operations.md +50 -0
- package/core/glossary/sales.md +690 -0
- package/core/intelligence/__init__.py +41 -0
- package/core/intelligence/agent_trigger.py +468 -0
- package/core/intelligence/audit_layers.py +491 -0
- package/core/intelligence/autonomous_processor.py +796 -0
- package/core/intelligence/bootstrap_registry.py +550 -0
- package/core/intelligence/business_model_detector.py +476 -0
- package/core/intelligence/dossier_trigger.py +336 -0
- package/core/intelligence/entity_normalizer.py +565 -0
- package/core/intelligence/org_chain_detector.py +411 -0
- package/core/intelligence/review_dashboard.py +338 -0
- package/core/intelligence/role_detector.py +855 -0
- package/core/intelligence/session_autosave.py +46 -0
- package/core/intelligence/skill_generator.py +601 -0
- package/core/intelligence/sow_generator.py +711 -0
- package/core/intelligence/sync_package_files.py +504 -0
- package/core/intelligence/task_orchestrator.py +780 -0
- package/core/intelligence/theme_analyzer.py +562 -0
- package/core/intelligence/tool_discovery.py +432 -0
- package/core/intelligence/validate_json_integrity.py +106 -0
- package/core/intelligence/validate_layers.py +310 -0
- package/core/intelligence/verify_classifications.py +94 -0
- package/core/intelligence/viability_scorer.py +592 -0
- package/core/jarvis/02-JARVIS-SOUL.md +390 -0
- package/core/jarvis/03-JARVIS-DNA.yaml +312 -0
- package/core/jarvis/AGENT.md +191 -0
- package/core/jarvis/agent-creator/AGENT.md +199 -0
- package/core/jarvis/agent-creator/SOUL.md +82 -0
- package/core/jarvis/agent-creator/tasks/create-agent.md +133 -0
- package/core/jarvis/agent-creator/tasks/sync-agents.md +100 -0
- package/core/jarvis/agent-creator/workflows/wf-create-agent.yaml +110 -0
- package/core/jarvis/agent-creator/workflows/wf-pipeline-trigger.yaml +111 -0
- package/core/jarvis/autonomous/benchmark/AGENT.md +347 -0
- package/core/jarvis/autonomous/benchmark/SOUL.md +78 -0
- package/core/jarvis/autonomous/critic/AGENT.md +324 -0
- package/core/jarvis/autonomous/critic/SOUL.md +78 -0
- package/core/jarvis/autonomous/evolver/AGENT.md +294 -0
- package/core/jarvis/autonomous/evolver/SOUL.md +85 -0
- package/core/jarvis/autonomous/playbook-generator/AGENT.md +399 -0
- package/core/jarvis/autonomous/playbook-generator/SOUL.md +80 -0
- package/core/patterns/_ROLE_PATTERNS.yaml +547 -0
- package/core/patterns/quality_gates.yaml +259 -0
- package/core/patterns/trigger_config.yaml +193 -0
- package/core/schemas/SCHEMA-INDEX.md +94 -0
- package/core/schemas/canonical-map.schema.json +98 -0
- package/core/schemas/chunks-state.schema.json +131 -0
- package/core/schemas/decisions-registry.schema.json +120 -0
- package/core/schemas/file-registry.schema.json +69 -0
- package/core/schemas/insights-state.schema.json +111 -0
- package/core/schemas/narratives-state.schema.json +150 -0
- package/core/tasks/CHANGELOG.md +55 -0
- package/core/tasks/TASK-REGISTRY.md +113 -0
- package/core/tasks/_templates/task-tmpl.md +105 -0
- package/core/tasks/analyze-themes.md +84 -0
- package/core/tasks/detect-role.md +82 -0
- package/core/tasks/extract-dna.md +114 -0
- package/core/tasks/normalize-entities.md +82 -0
- package/core/tasks/process-batch.md +111 -0
- package/core/tasks/validate-cascade.md +105 -0
- package/core/templates/README.md +27 -0
- package/core/templates/agents/dna-config-template.yaml +181 -0
- package/core/templates/agents/enrichment-protocol.md +408 -0
- package/core/templates/agents/memory-template.md +567 -0
- package/core/templates/agents/reasoning-model.md +331 -0
- package/core/templates/agents/soul-template.md +416 -0
- package/core/templates/agents/template-evolution.md +544 -0
- package/core/templates/debates/CONCLAVE-LOG-TEMPLATE-v2.md +309 -0
- package/core/templates/debates/conclave-log-template.md +309 -0
- package/core/templates/debates/conclave-protocol.md +518 -0
- package/core/templates/debates/debate-dynamics-config.yaml +322 -0
- package/core/templates/debates/debate-dynamics.md +613 -0
- package/core/templates/debates/debate-protocol.md +323 -0
- package/core/templates/logs/LOG-TEMPLATES.md +1068 -0
- package/core/templates/logs/batch-visual-template.md +841 -0
- package/core/templates/logs/log-structure.md +65 -0
- package/core/templates/logs/visual-diff.md +159 -0
- package/core/templates/phases/dossier-compilation.md +790 -0
- package/core/templates/phases/narrative-metabolism.md +292 -0
- package/core/templates/phases/narrative-synthesis.md +278 -0
- package/core/templates/phases/phase4-checkpoint.md +146 -0
- package/core/templates/phases/prompt-1.1-chunking.md +154 -0
- package/core/templates/phases/prompt-1.2-entity-resolution.md +186 -0
- package/core/templates/phases/prompt-2.1-dna-tags.md +208 -0
- package/core/templates/phases/prompt-2.1-insight-extraction.md +191 -0
- package/core/templates/phases/prompt-3.1-narrative.md +331 -0
- package/core/templates/phases/sources-compilation.md +340 -0
- package/core/workflows/PIPELINE-JARVIS-DOCS.md +606 -0
- package/core/workflows/wf-conclave.yaml +139 -0
- package/core/workflows/wf-extract-dna.yaml +158 -0
- package/core/workflows/wf-ingest.yaml +88 -0
- package/core/workflows/wf-pipeline-full.yaml +138 -0
- package/docs/API-KEYS-GUIDE.md +372 -0
- package/docs/INTEGRATION-POINTS.md +501 -0
- package/docs/LAYERS.md +403 -0
- package/docs/PLAN-MODE-PROTOCOL.md +388 -0
- package/docs/RESTORE-AND-INDEX.md +203 -0
- package/docs/TAG-RESOLVER-IMPLEMENTATION.md +597 -0
- package/docs/conselho.md +337 -0
- package/docs/context7-readme.md +28 -0
- package/docs/jarvis-logging-protocol.md +380 -0
- package/docs/pipeline-completa-v4.md +1315 -0
- package/docs/prompts/meta_agente_mapeamento_processos.md +297 -0
- package/docs/quick-start.md +197 -0
- package/docs/readme-ralph-cascateamento.md +207 -0
- package/docs/template-master.md +727 -0
- package/docs/templates/phase5/IMPLEMENTATION-GUIDE.md +355 -0
- package/docs/templates/phase5/MOGA-BRAIN-PHASE5-TEMPLATES.md +1284 -0
- package/docs/templates/phase5/README.md +165 -0
- package/docs/workflow-continuous-claude.md +2232 -0
- package/inbox/.gitkeep +0 -0
- package/inbox/README.md +15 -0
- package/knowledge/NAVIGATION-MAP.json +292 -0
- package/knowledge/README.md +11 -0
- package/knowledge/dna/.gitkeep +0 -0
- package/knowledge/dossiers/persons/.gitkeep +0 -0
- package/knowledge/dossiers/system/.gitkeep +0 -0
- package/knowledge/dossiers/themes/.gitkeep +0 -0
- package/knowledge/playbooks/.gitkeep +0 -0
- package/knowledge/sources/.gitkeep +0 -0
- package/logs/.gitkeep +0 -0
- package/logs/README.md +11 -0
- package/package.json +180 -0
- package/requirements.txt +4 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
# GDRIVE TRANSCRIPTION DOWNLOADER SKILL
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: gdrive-download
|
|
5
|
+
description: Baixa transcrições .docx do Google Drive via OAuth e converte para .txt
|
|
6
|
+
version: 2.0.0
|
|
7
|
+
author: JARVIS
|
|
8
|
+
created: 2026-01-08
|
|
9
|
+
updated: 2026-01-08
|
|
10
|
+
triggers:
|
|
11
|
+
- baixar transcrições
|
|
12
|
+
- download drive
|
|
13
|
+
- extrair transcrições
|
|
14
|
+
- baixar docx
|
|
15
|
+
- gdrive download
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## PROPÓSITO
|
|
19
|
+
|
|
20
|
+
Esta skill automatiza o download de transcrições .docx do Google Drive, extração de texto e salvamento como .txt no INBOX do Mega Brain.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## ⚠️ REGRA CRÍTICA: EVITAR DUPLICATAS
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
28
|
+
│ HIERARQUIA DE TRANSCRIÇÕES - BAIXAR APENAS UMA POR VÍDEO │
|
|
29
|
+
│ │
|
|
30
|
+
│ Quando uma pasta no Drive tem estrutura com subpastas: │
|
|
31
|
+
│ │
|
|
32
|
+
│ 📂 Pasta Principal/ │
|
|
33
|
+
│ ├── 📄 video1.docx ← Transcrição SIMPLES (só áudio) │
|
|
34
|
+
│ ├── 📄 video2.docx │
|
|
35
|
+
│ └── 📂 Transcrição Visual + Verbal/ │
|
|
36
|
+
│ ├── 📄 video1.docx ← Transcrição COMPLETA (áudio + tela) │
|
|
37
|
+
│ └── 📄 video2.docx │
|
|
38
|
+
│ │
|
|
39
|
+
│ REGRA: Priorizar Visual+Verbal, ignorar simples se ambas existem │
|
|
40
|
+
│ │
|
|
41
|
+
│ ALGORITMO: │
|
|
42
|
+
│ 1. Listar TODOS os arquivos (raiz + subpastas) │
|
|
43
|
+
│ 2. Identificar duplicatas pelo nome base do vídeo │
|
|
44
|
+
│ 3. Se duplicata existe: │
|
|
45
|
+
│ - Manter apenas o da pasta "Visual + Verbal" │
|
|
46
|
+
│ - Descartar o da raiz │
|
|
47
|
+
│ 4. Se não há duplicata: baixar normalmente │
|
|
48
|
+
└─────────────────────────────────────────────────────────────────────────────┘
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Por que isso importa:
|
|
52
|
+
- **151 vídeos** podem virar **302 arquivos** se baixar ambas versões
|
|
53
|
+
- Isso **infla artificialmente** os números
|
|
54
|
+
- A versão Visual+Verbal é **superior** (captura slides, texto na tela)
|
|
55
|
+
- Duplicatas poluem o INBOX e confundem o Pipeline
|
|
56
|
+
|
|
57
|
+
## QUANDO USAR
|
|
58
|
+
|
|
59
|
+
1. **Fase 1 - Download:** Quando precisar baixar transcrições faltantes
|
|
60
|
+
2. **Novos materiais:** Quando novas transcrições forem adicionadas ao Drive
|
|
61
|
+
3. **Retry de falhas:** Quando downloads anteriores falharam
|
|
62
|
+
4. **Atualização de inventário:** Após adicionar novos cursos/fontes
|
|
63
|
+
|
|
64
|
+
## ARQUITETURA
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
68
|
+
│ GDRIVE DOWNLOADER │
|
|
69
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
70
|
+
│ │
|
|
71
|
+
│ INVENTÁRIO SCRIPT INBOX │
|
|
72
|
+
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
|
73
|
+
│ │ JSON │─────────────▶│ OAuth │────────────▶│ .txt │ │
|
|
74
|
+
│ │ fileIDs │ │ python │ │ files │ │
|
|
75
|
+
│ └─────────┘ └─────────┘ └─────────┘ │
|
|
76
|
+
│ │
|
|
77
|
+
│ system/ scripts/ inbox/ │
|
|
78
|
+
│ DRIVE-TRANS... download_all... [FONTE]/ │
|
|
79
|
+
│ │
|
|
80
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## COMPONENTES
|
|
84
|
+
|
|
85
|
+
### 1. Inventário de Transcrições
|
|
86
|
+
**Localização:** `system/DRIVE-TRANSCRIPTIONS-INVENTORY.json`
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"courses": {
|
|
91
|
+
"COURSE_KEY": {
|
|
92
|
+
"folder": "DESTINATION/PATH",
|
|
93
|
+
"count": N,
|
|
94
|
+
"files": [
|
|
95
|
+
{"id": "GOOGLE_DRIVE_FILE_ID", "name": "filename.docx"}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 2. Script de Download
|
|
103
|
+
**Localização:** `scripts/download_all_transcriptions.py`
|
|
104
|
+
|
|
105
|
+
**Dependências:**
|
|
106
|
+
- python-docx (`pip install python-docx`)
|
|
107
|
+
- google-api-python-client (via gdrive_manager)
|
|
108
|
+
|
|
109
|
+
**Autenticação:**
|
|
110
|
+
- OAuth2 via `scripts/gdrive_manager.py`
|
|
111
|
+
- Token salvo em `~/.config/moga-brain-gdrive/token.json`
|
|
112
|
+
|
|
113
|
+
### 3. Sistema de Checkpoint
|
|
114
|
+
**Localização:** `.claude/mission-control/DOWNLOAD-CHECKPOINT.json`
|
|
115
|
+
|
|
116
|
+
Persiste:
|
|
117
|
+
- IDs de arquivos completados
|
|
118
|
+
- Arquivos que falharam (para retry)
|
|
119
|
+
- Último curso processado
|
|
120
|
+
|
|
121
|
+
## COMANDOS
|
|
122
|
+
|
|
123
|
+
### Listar cursos disponíveis
|
|
124
|
+
```bash
|
|
125
|
+
# From the project root
|
|
126
|
+
python3 scripts/download_all_transcriptions.py --list
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Baixar todos os cursos
|
|
130
|
+
```bash
|
|
131
|
+
python3 scripts/download_all_transcriptions.py --all
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Baixar curso específico
|
|
135
|
+
```bash
|
|
136
|
+
python3 scripts/download_all_transcriptions.py --course COURSE_KEY
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Continuar de onde parou (resume)
|
|
140
|
+
```bash
|
|
141
|
+
python3 scripts/download_all_transcriptions.py --all --resume
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## CURSOS MAPEADOS
|
|
145
|
+
|
|
146
|
+
| Course Key | Destino | Count |
|
|
147
|
+
|------------|---------|-------|
|
|
148
|
+
| SALES_TRAINING_BR | COLE GORDON/COURSES | 59 |
|
|
149
|
+
| JEREMY_HAYNES_SALES_TRAINING | JEREMY HAYNES/COURSES | 14 |
|
|
150
|
+
| JEREMY_MINER_7TH_LEVEL | JEREMY MINER/COURSES | 40 |
|
|
151
|
+
| ALEX_HORMOZI | ALEX HORMOZI/MARKETING | 2 |
|
|
152
|
+
| JEREMY_HAYNES_PROGRAM | JEREMY HAYNES PROGRAM/COURSES | 2 |
|
|
153
|
+
| COLE_GORDON_EXTRAS | COLE GORDON/MASTERMINDS | 6 |
|
|
154
|
+
|
|
155
|
+
## FLUXO DE EXECUÇÃO
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
159
|
+
│ 1. VERIFICAR INVENTÁRIO │
|
|
160
|
+
│ └─ Ler system/DRIVE-TRANSCRIPTIONS-INVENTORY.json │
|
|
161
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
162
|
+
│ 2. CARREGAR CHECKPOINT │
|
|
163
|
+
│ └─ Verificar .claude/mission-control/DOWNLOAD-CHECKPOINT │
|
|
164
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
165
|
+
│ 3. AUTENTICAR OAUTH │
|
|
166
|
+
│ └─ Via gdrive_manager.get_drive_service() │
|
|
167
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
168
|
+
│ 4. PARA CADA ARQUIVO: │
|
|
169
|
+
│ ├─ Skip se já completado (checkpoint) │
|
|
170
|
+
│ ├─ Skip se arquivo já existe no destino │
|
|
171
|
+
│ ├─ Download .docx do Drive (binary) │
|
|
172
|
+
│ ├─ Extrair texto via python-docx │
|
|
173
|
+
│ ├─ Salvar como .txt no INBOX │
|
|
174
|
+
│ └─ Atualizar checkpoint │
|
|
175
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
176
|
+
│ 5. GERAR SUMÁRIO │
|
|
177
|
+
│ └─ Downloaded / Skipped / Failed │
|
|
178
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## TROUBLESHOOTING
|
|
182
|
+
|
|
183
|
+
### Token expirado
|
|
184
|
+
O script renova automaticamente. Se persistir:
|
|
185
|
+
```bash
|
|
186
|
+
rm ~/.config/moga-brain-gdrive/token.json
|
|
187
|
+
# Re-executar script (abrirá browser para autenticar)
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Broken pipe errors
|
|
191
|
+
Arquivos grandes ou conexão instável. O checkpoint preserva progresso.
|
|
192
|
+
```bash
|
|
193
|
+
# Re-executar com resume
|
|
194
|
+
python3 scripts/download_all_transcriptions.py --all --resume
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Arquivo não encontrado no Drive
|
|
198
|
+
Verificar se o fileId está correto no inventário.
|
|
199
|
+
```bash
|
|
200
|
+
# Buscar arquivo pelo ID
|
|
201
|
+
python3 -c "
|
|
202
|
+
from SCRIPTS.gdrive_manager import get_drive_service
|
|
203
|
+
svc = get_drive_service()
|
|
204
|
+
print(svc.files().get(fileId='FILE_ID_HERE').execute())
|
|
205
|
+
"
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## ADICIONAR NOVOS CURSOS
|
|
209
|
+
|
|
210
|
+
1. Identificar pasta no Google Drive
|
|
211
|
+
2. Listar arquivos .docx com seus IDs
|
|
212
|
+
3. Adicionar ao inventário JSON:
|
|
213
|
+
```json
|
|
214
|
+
"NEW_COURSE_KEY": {
|
|
215
|
+
"folder": "FONTE/SUBPASTA",
|
|
216
|
+
"count": N,
|
|
217
|
+
"files": [...]
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
4. Mapear no script (COURSE_FOLDERS dict)
|
|
221
|
+
5. Executar download
|
|
222
|
+
|
|
223
|
+
## INTEGRAÇÃO COM PIPELINE
|
|
224
|
+
|
|
225
|
+
Após download, os arquivos .txt estão prontos para:
|
|
226
|
+
1. **Fase 2.5 - Tagging:** Adicionar [TAG] aos nomes
|
|
227
|
+
2. **Fase 3 - De-Para:** Validar planilha vs computador
|
|
228
|
+
3. **Fase 4 - Pipeline:** Processar chunks/insights
|
|
229
|
+
|
|
230
|
+
## MÉTRICAS DE SUCESSO
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
✅ 149/149 arquivos do inventário
|
|
234
|
+
✅ 0 falhas permanentes
|
|
235
|
+
✅ Checkpoint preservado para retry
|
|
236
|
+
✅ Estrutura de pastas correta no INBOX
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
## HISTÓRICO
|
|
240
|
+
|
|
241
|
+
| Data | Ação | Resultado |
|
|
242
|
+
|------|------|-----------|
|
|
243
|
+
| 2026-01-08 | Download inicial completo | 149 arquivos |
|
|
244
|
+
| 2026-01-05 | Criação do inventário | 149 entries |
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
**JARVIS SKILL v1.0.0**
|
|
249
|
+
*Automatizando downloads do Google Drive para o Mega Brain*
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemini-fallback
|
|
3
|
+
description: Usa Gemini CLI para acessar sites bloqueados (Reddit, etc)
|
|
4
|
+
triggers:
|
|
5
|
+
- "buscar no reddit"
|
|
6
|
+
- "acessar site bloqueado"
|
|
7
|
+
- "gemini fetch"
|
|
8
|
+
- "/gemini"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Gemini CLI Fallback
|
|
12
|
+
|
|
13
|
+
Use este skill quando precisar acessar sites que Claude Code não consegue (Reddit, sites com bloqueio).
|
|
14
|
+
|
|
15
|
+
## Pré-requisitos
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Instalar Gemini CLI (se não instalado)
|
|
19
|
+
npm install -g @anthropic-ai/gemini-cli
|
|
20
|
+
# ou
|
|
21
|
+
pip install google-generativeai
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Como Usar
|
|
25
|
+
|
|
26
|
+
### Via Skill
|
|
27
|
+
```
|
|
28
|
+
/gemini [URL ou query]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Exemplos
|
|
32
|
+
```
|
|
33
|
+
/gemini https://reddit.com/r/ClaudeAI/top
|
|
34
|
+
/gemini "melhores práticas claude code reddit"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Execução
|
|
38
|
+
|
|
39
|
+
Quando acionado, este skill:
|
|
40
|
+
|
|
41
|
+
1. Verifica se Gemini CLI está disponível
|
|
42
|
+
2. Usa tmux para criar sessão isolada
|
|
43
|
+
3. Executa query via Gemini (que tem acesso web)
|
|
44
|
+
4. Captura e retorna o resultado
|
|
45
|
+
|
|
46
|
+
### Script de Execução
|
|
47
|
+
|
|
48
|
+
Execute o script auxiliar:
|
|
49
|
+
```bash
|
|
50
|
+
python3 .claude/skills/gemini-fallback/gemini_fetch.py "URL_OU_QUERY"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Alternativa Manual
|
|
54
|
+
|
|
55
|
+
Se Gemini CLI não estiver disponível, use:
|
|
56
|
+
|
|
57
|
+
1. Abrir nova aba do terminal
|
|
58
|
+
2. Usar browser ou curl para acessar
|
|
59
|
+
3. Copiar conteúdo relevante
|
|
60
|
+
4. Colar no Claude Code
|
|
61
|
+
|
|
62
|
+
## Sites Comumente Bloqueados
|
|
63
|
+
|
|
64
|
+
- Reddit (r/ClaudeAI, r/LocalLLaMA)
|
|
65
|
+
- Twitter/X
|
|
66
|
+
- LinkedIn
|
|
67
|
+
- Alguns docs sites
|
|
File without changes
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gha
|
|
3
|
+
description: Diagnóstico de GitHub Actions failures
|
|
4
|
+
triggers:
|
|
5
|
+
- "/gha"
|
|
6
|
+
- "github actions"
|
|
7
|
+
- "ci failed"
|
|
8
|
+
- "workflow failed"
|
|
9
|
+
- "build failed"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# GitHub Actions Diagnostics
|
|
13
|
+
|
|
14
|
+
Diagnóstico automático de falhas em GitHub Actions.
|
|
15
|
+
|
|
16
|
+
## Uso
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
/gha # Verifica último workflow run
|
|
20
|
+
/gha [run_id] # Analisa run específico
|
|
21
|
+
/gha --flaky # Identifica testes flaky
|
|
22
|
+
/gha --history # Histórico de falhas
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## O Que Faz
|
|
26
|
+
|
|
27
|
+
1. **Busca último workflow run com falha**
|
|
28
|
+
2. **Baixa logs do job**
|
|
29
|
+
3. **Analisa erro e identifica causa raiz**
|
|
30
|
+
4. **Sugere correção**
|
|
31
|
+
|
|
32
|
+
## Execução Manual
|
|
33
|
+
|
|
34
|
+
Se precisar debugar manualmente:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Listar workflows
|
|
38
|
+
gh run list --limit 10
|
|
39
|
+
|
|
40
|
+
# Ver detalhes de um run
|
|
41
|
+
gh run view [RUN_ID]
|
|
42
|
+
|
|
43
|
+
# Baixar logs
|
|
44
|
+
gh run view [RUN_ID] --log
|
|
45
|
+
|
|
46
|
+
# Ver jobs de um run
|
|
47
|
+
gh run view [RUN_ID] --job [JOB_ID]
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Análise Automática
|
|
51
|
+
|
|
52
|
+
Quando acionado, JARVIS irá:
|
|
53
|
+
|
|
54
|
+
1. Executar `gh run list --status failure --limit 5`
|
|
55
|
+
2. Identificar o run mais recente
|
|
56
|
+
3. Executar `gh run view [ID] --log`
|
|
57
|
+
4. Analisar os logs buscando:
|
|
58
|
+
- Erros de teste
|
|
59
|
+
- Erros de build
|
|
60
|
+
- Erros de lint
|
|
61
|
+
- Timeout
|
|
62
|
+
- Dependências faltando
|
|
63
|
+
5. Reportar causa provável e sugerir fix
|
|
64
|
+
|
|
65
|
+
## Padrões Comuns de Erro
|
|
66
|
+
|
|
67
|
+
| Padrão | Causa Provável | Sugestão |
|
|
68
|
+
|--------|----------------|----------|
|
|
69
|
+
| `npm ERR!` | Dependência | `npm ci` ou limpar cache |
|
|
70
|
+
| `ENOENT` | Arquivo faltando | Verificar paths |
|
|
71
|
+
| `timeout` | Teste lento/flaky | Aumentar timeout ou otimizar |
|
|
72
|
+
| `FAILED` em test | Teste quebrado | Ver stack trace |
|
|
73
|
+
| `TypeScript error` | Tipo incorreto | Fix no código |
|
|
74
|
+
| `ESLint` | Lint error | Auto-fix ou manual |
|
|
75
|
+
|
|
76
|
+
## Exemplo de Output
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
╔══════════════════════════════════════════════════════════════════════════════╗
|
|
80
|
+
║ GITHUB ACTIONS DIAGNOSTIC ║
|
|
81
|
+
╠══════════════════════════════════════════════════════════════════════════════╣
|
|
82
|
+
║ Run ID: 12345678 ║
|
|
83
|
+
║ Workflow: CI ║
|
|
84
|
+
║ Status: FAILED ║
|
|
85
|
+
║ Duration: 3m 42s ║
|
|
86
|
+
╠══════════════════════════════════════════════════════════════════════════════╣
|
|
87
|
+
║ CAUSA RAIZ: ║
|
|
88
|
+
║ Test failure in src/__tests__/api.test.ts:42 ║
|
|
89
|
+
║ ║
|
|
90
|
+
║ Error: Expected 200, got 404 ║
|
|
91
|
+
║ ║
|
|
92
|
+
║ SUGESTÃO: ║
|
|
93
|
+
║ O endpoint /api/users foi removido ou renomeado. ║
|
|
94
|
+
║ Verificar se o route existe em src/routes/users.ts ║
|
|
95
|
+
╚══════════════════════════════════════════════════════════════════════════════╝
|
|
96
|
+
```
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
GITHUB ACTIONS DIAGNOSTIC
|
|
4
|
+
=========================
|
|
5
|
+
Diagnóstico automático de falhas em GitHub Actions.
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
python3 gha_diagnostic.py # Último run com falha
|
|
9
|
+
python3 gha_diagnostic.py [run_id] # Run específico
|
|
10
|
+
python3 gha_diagnostic.py --flaky # Testes flaky
|
|
11
|
+
python3 gha_diagnostic.py --history # Histórico
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import sys
|
|
15
|
+
import subprocess
|
|
16
|
+
import json
|
|
17
|
+
import re
|
|
18
|
+
from datetime import datetime
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def run_gh(args: list) -> tuple[bool, str]:
|
|
22
|
+
"""Execute gh CLI command"""
|
|
23
|
+
try:
|
|
24
|
+
result = subprocess.run(
|
|
25
|
+
['gh'] + args,
|
|
26
|
+
capture_output=True,
|
|
27
|
+
text=True,
|
|
28
|
+
timeout=30
|
|
29
|
+
)
|
|
30
|
+
if result.returncode == 0:
|
|
31
|
+
return True, result.stdout
|
|
32
|
+
return False, result.stderr
|
|
33
|
+
except Exception as e:
|
|
34
|
+
return False, str(e)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def get_failed_runs(limit: int = 5) -> list:
|
|
38
|
+
"""Get recent failed runs"""
|
|
39
|
+
success, output = run_gh([
|
|
40
|
+
'run', 'list',
|
|
41
|
+
'--status', 'failure',
|
|
42
|
+
'--limit', str(limit),
|
|
43
|
+
'--json', 'databaseId,name,conclusion,createdAt,headBranch'
|
|
44
|
+
])
|
|
45
|
+
|
|
46
|
+
if success:
|
|
47
|
+
try:
|
|
48
|
+
return json.loads(output)
|
|
49
|
+
except:
|
|
50
|
+
pass
|
|
51
|
+
return []
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def get_run_logs(run_id: str) -> str:
|
|
55
|
+
"""Get logs for a specific run"""
|
|
56
|
+
success, output = run_gh(['run', 'view', run_id, '--log'])
|
|
57
|
+
if success:
|
|
58
|
+
return output
|
|
59
|
+
return f"Error getting logs: {output}"
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def get_run_details(run_id: str) -> dict:
|
|
63
|
+
"""Get detailed info about a run"""
|
|
64
|
+
success, output = run_gh([
|
|
65
|
+
'run', 'view', run_id,
|
|
66
|
+
'--json', 'databaseId,name,conclusion,createdAt,headBranch,jobs'
|
|
67
|
+
])
|
|
68
|
+
|
|
69
|
+
if success:
|
|
70
|
+
try:
|
|
71
|
+
return json.loads(output)
|
|
72
|
+
except:
|
|
73
|
+
pass
|
|
74
|
+
return {}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def analyze_logs(logs: str) -> dict:
|
|
78
|
+
"""Analyze logs to find root cause"""
|
|
79
|
+
analysis = {
|
|
80
|
+
'error_type': 'Unknown',
|
|
81
|
+
'error_message': '',
|
|
82
|
+
'file': '',
|
|
83
|
+
'line': '',
|
|
84
|
+
'suggestion': ''
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
# Common patterns
|
|
88
|
+
patterns = [
|
|
89
|
+
# Test failures
|
|
90
|
+
(r'FAIL\s+(.+\.test\.[jt]sx?)', 'Test Failure', 'Verificar o teste indicado'),
|
|
91
|
+
(r'AssertionError:\s*(.+)', 'Assertion Failed', 'Verificar expectativa do teste'),
|
|
92
|
+
(r'Expected:\s*(.+)\s*Received:\s*(.+)', 'Assertion Mismatch', 'Valores não correspondem'),
|
|
93
|
+
|
|
94
|
+
# TypeScript errors
|
|
95
|
+
(r'error TS\d+:\s*(.+)', 'TypeScript Error', 'Corrigir tipo no código'),
|
|
96
|
+
(r"Property '(\w+)' does not exist", 'Missing Property', 'Adicionar propriedade ao tipo'),
|
|
97
|
+
|
|
98
|
+
# Build errors
|
|
99
|
+
(r'npm ERR!\s*(.+)', 'NPM Error', 'Verificar dependências, rodar npm ci'),
|
|
100
|
+
(r'Module not found:\s*(.+)', 'Module Not Found', 'Instalar módulo faltante'),
|
|
101
|
+
|
|
102
|
+
# ESLint
|
|
103
|
+
(r'error\s+(.+)\s+@typescript-eslint', 'ESLint Error', 'Corrigir lint error'),
|
|
104
|
+
|
|
105
|
+
# Generic errors
|
|
106
|
+
(r'Error:\s*(.+)', 'Generic Error', 'Ver stack trace para mais detalhes'),
|
|
107
|
+
(r'ENOENT.*?([^\s]+)', 'File Not Found', 'Verificar se arquivo existe'),
|
|
108
|
+
(r'timeout', 'Timeout', 'Aumentar timeout ou otimizar'),
|
|
109
|
+
]
|
|
110
|
+
|
|
111
|
+
for pattern, error_type, suggestion in patterns:
|
|
112
|
+
match = re.search(pattern, logs, re.IGNORECASE)
|
|
113
|
+
if match:
|
|
114
|
+
analysis['error_type'] = error_type
|
|
115
|
+
analysis['error_message'] = match.group(1) if match.groups() else match.group(0)
|
|
116
|
+
analysis['suggestion'] = suggestion
|
|
117
|
+
break
|
|
118
|
+
|
|
119
|
+
# Try to find file:line reference
|
|
120
|
+
file_match = re.search(r'([^\s]+\.[jt]sx?):(\d+)', logs)
|
|
121
|
+
if file_match:
|
|
122
|
+
analysis['file'] = file_match.group(1)
|
|
123
|
+
analysis['line'] = file_match.group(2)
|
|
124
|
+
|
|
125
|
+
return analysis
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def print_diagnostic(run_id: str):
|
|
129
|
+
"""Print full diagnostic for a run"""
|
|
130
|
+
details = get_run_details(run_id)
|
|
131
|
+
logs = get_run_logs(run_id)
|
|
132
|
+
analysis = analyze_logs(logs)
|
|
133
|
+
|
|
134
|
+
print("""
|
|
135
|
+
╔══════════════════════════════════════════════════════════════════════════════╗
|
|
136
|
+
║ GITHUB ACTIONS DIAGNOSTIC ║
|
|
137
|
+
╠══════════════════════════════════════════════════════════════════════════════╣""")
|
|
138
|
+
|
|
139
|
+
if details:
|
|
140
|
+
name = details.get('name', 'Unknown')[:60]
|
|
141
|
+
branch = details.get('headBranch', 'Unknown')[:30]
|
|
142
|
+
conclusion = details.get('conclusion', 'Unknown')
|
|
143
|
+
|
|
144
|
+
print(f"║ Run ID: {run_id:<62} ║")
|
|
145
|
+
print(f"║ Workflow: {name:<62} ║")
|
|
146
|
+
print(f"║ Branch: {branch:<62} ║")
|
|
147
|
+
print(f"║ Status: {conclusion:<62} ║")
|
|
148
|
+
|
|
149
|
+
print("╠══════════════════════════════════════════════════════════════════════════════╣")
|
|
150
|
+
print("║ ANÁLISE: ║")
|
|
151
|
+
print(f"║ Tipo: {analysis['error_type']:<62} ║")
|
|
152
|
+
|
|
153
|
+
if analysis['error_message']:
|
|
154
|
+
msg = analysis['error_message'][:60]
|
|
155
|
+
print(f"║ Erro: {msg:<62} ║")
|
|
156
|
+
|
|
157
|
+
if analysis['file']:
|
|
158
|
+
loc = f"{analysis['file']}:{analysis['line']}"[:60]
|
|
159
|
+
print(f"║ Local: {loc:<62} ║")
|
|
160
|
+
|
|
161
|
+
print("║ ║")
|
|
162
|
+
print("║ SUGESTÃO: ║")
|
|
163
|
+
suggestion = analysis['suggestion'][:70]
|
|
164
|
+
print(f"║ {suggestion:<76} ║")
|
|
165
|
+
|
|
166
|
+
print("╚══════════════════════════════════════════════════════════════════════════════╝")
|
|
167
|
+
|
|
168
|
+
# Print relevant log snippet
|
|
169
|
+
if analysis['error_message']:
|
|
170
|
+
print("\n📋 LOG RELEVANTE:")
|
|
171
|
+
print("-" * 80)
|
|
172
|
+
# Find context around error
|
|
173
|
+
lines = logs.split('\n')
|
|
174
|
+
for i, line in enumerate(lines):
|
|
175
|
+
if analysis['error_message'][:30] in line:
|
|
176
|
+
start = max(0, i - 5)
|
|
177
|
+
end = min(len(lines), i + 10)
|
|
178
|
+
print('\n'.join(lines[start:end]))
|
|
179
|
+
break
|
|
180
|
+
print("-" * 80)
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def main():
|
|
184
|
+
args = sys.argv[1:]
|
|
185
|
+
|
|
186
|
+
if '--help' in args or '-h' in args:
|
|
187
|
+
print(__doc__)
|
|
188
|
+
return
|
|
189
|
+
|
|
190
|
+
# Check gh CLI
|
|
191
|
+
success, _ = run_gh(['--version'])
|
|
192
|
+
if not success:
|
|
193
|
+
print("❌ GitHub CLI (gh) not installed or not authenticated")
|
|
194
|
+
print(" Install: brew install gh")
|
|
195
|
+
print(" Auth: gh auth login")
|
|
196
|
+
return
|
|
197
|
+
|
|
198
|
+
if '--history' in args:
|
|
199
|
+
print("📊 Histórico de falhas recentes:\n")
|
|
200
|
+
runs = get_failed_runs(10)
|
|
201
|
+
for run in runs:
|
|
202
|
+
print(f" • {run['databaseId']} - {run['name']} ({run['headBranch']})")
|
|
203
|
+
return
|
|
204
|
+
|
|
205
|
+
if '--flaky' in args:
|
|
206
|
+
print("🔍 Analisando testes flaky...\n")
|
|
207
|
+
# Get recent runs and look for intermittent failures
|
|
208
|
+
runs = get_failed_runs(20)
|
|
209
|
+
print(f" {len(runs)} falhas nas últimas 20 runs")
|
|
210
|
+
# Could do more sophisticated analysis here
|
|
211
|
+
return
|
|
212
|
+
|
|
213
|
+
# Get specific run or latest failed
|
|
214
|
+
if args and args[0].isdigit():
|
|
215
|
+
run_id = args[0]
|
|
216
|
+
else:
|
|
217
|
+
runs = get_failed_runs(1)
|
|
218
|
+
if not runs:
|
|
219
|
+
print("✅ Nenhuma falha recente encontrada!")
|
|
220
|
+
return
|
|
221
|
+
run_id = str(runs[0]['databaseId'])
|
|
222
|
+
|
|
223
|
+
print_diagnostic(run_id)
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
if __name__ == '__main__':
|
|
227
|
+
main()
|