Epic: EPIC-GROWTHOS Data: 2026-04-01 Status: Em Execucao Objetivo: Validar 100% do plugin antes de subir ao GitHub
| Metrica | Valor |
|---|---|
| Total de categorias | 13 |
| Arquivos sob teste | 100+ |
| Modulos Python | 11 |
| MCP Servers | 3 |
| Skills | 9 |
| Agents | 8 (7 + CMO) |
| Hooks | 4 |
| Templates HTML | 3 |
| Test suites existentes | 11 |
| Verificacoes estimadas | 300+ |
Escopo: 8 modulos Python com test suites Executor: pytest Criterio de sucesso: 100% dos testes passando, zero failures
| Modulo | Arquivo de Teste | O que testa |
|---|---|---|
| config.py | test_config.py | BrandVoiceConfig, load/validate YAML, defaults, campo validation |
| token_manager.py | test_token_manager.py | Rate limiting, token bucket, cooldown, concurrent access |
| circuit_breaker.py | test_circuit_breaker.py | State machine (closed/open/half-open), thresholds, recovery |
| audit_logger.py | test_audit_logger.py | JSONL logging, entry format, file rotation, flush |
| autonomy.py | test_autonomy.py | AutonomyManager, kill switch, dry-run, level enforcement |
| scheduler.py | test_scheduler.py | Cron parsing, CalendarEntry, retry backoff, ScheduledPublisher |
| html_generator.py | test_html_generator.py | Template rendering, brand integration, output size |
| intent_router.py | test_intent_router.py | Intent classification, subcommand routing, fallback |
Comando: cd shared-lib && python3 -m pytest tests/ -v --tb=short
Escopo: 3 MCP servers Criterio de sucesso: Todos os testes passando
| Server | Testes | O que testa |
|---|---|---|
| mcp-social-publish | test_server.py | Endpoints publish, platform adapters (Twitter, LinkedIn, Reddit, GitHub, Threads) |
| mcp-obsidian-vault | test_server.py, test_vault_ops.py | Vault CRUD, frontmatter parse, file operations |
| mcp-social-discover | (verificar existencia) | Endpoints discover, platform search |
Comando por server: cd mcp-servers/{server} && python3 -m pytest tests/ -v --tb=short
Escopo: Todos os modulos Python Criterio de sucesso: Zero ImportError, zero circular deps
shared-lib/growthOS_shared/__init__.pyexporta todos os modulos- Cada modulo importa sem erro:
python3 -c "from growthOS_shared import X" - Cada MCP server importa sem erro:
python3 -c "import server" - Sem circular imports entre modulos
- Todas as dependencias externas estao no pyproject.toml/requirements.txt
Escopo: Todo codigo .py (excluindo .venv) Criterio de sucesso: Zero erros ruff, zero warnings criticos
ruff checksem erros em shared-lib/ruff checksem erros em mcp-servers/- PEP 8 compliance
- Unused imports removidos
- Dead code removido
Comando: ruff check growthOS/ --exclude .venv
Escopo: plugin.json e estrutura de diretorios Criterio de sucesso: JSON valido, todas refs resolvem
plugin.json— JSON valido com campos: name, version, description, commands, agents, skills, hooks.claude-plugin/plugin.json— Consistente com o principal- Cada entry em commands[] aponta para diretorio existente com COMMAND.md
- Cada entry em agents[] aponta para diretorio existente com AGENT.md
- Cada entry em skills[] aponta para diretorio existente com SKILL.md
- Cada entry em hooks[] aponta para arquivo existente
Escopo: 23+ arquivos .md com frontmatter YAML Criterio de sucesso: Todos os frontmatters parsam como YAML valido
| Skill | Arquivo | Campos obrigatorios |
|---|---|---|
| marketing-strategy | SKILL.md | name, description |
| content-creation | SKILL.md | name, description |
| copywriting | SKILL.md | name, description |
| seo-growth | SKILL.md | name, description |
| video-production | SKILL.md | name, description |
| landing-page-design | SKILL.md | name, description |
| social-media-management | SKILL.md | name, description |
| competitive-intelligence | SKILL.md | name, description |
| platform-mastery | SKILL.md | name, description |
| Agent | Arquivo | Campos obrigatorios |
|---|---|---|
| cmo | AGENT.md | name, description |
| content-creator | AGENT.md | name, description |
| growth-strategist | AGENT.md | name, description |
| social-publisher | AGENT.md | name, description |
| growth-engineer | AGENT.md | name, description |
| intelligence-analyst | AGENT.md | name, description |
| visual-designer | AGENT.md | name, description |
| Hook | Campos obrigatorios |
|---|---|
| audit-logger.md | name, description, hooks[].type |
| circuit-breaker.md | name, description, hooks[].type |
| preview-before-publish.md | name, description, hooks[].type |
| dry-run-guard.md | name, description, hooks[].type |
| Command | Campos obrigatorios |
|---|---|
| COMMAND.md | name, description |
| setup.md | name, description |
Escopo: Arquivos de configuracao YAML Criterio de sucesso: Todos parsam, schemas corretos
| Arquivo | Validacoes |
|---|---|
| brand-voice.example.yaml | YAML valido, secoes: brand, tone, platforms, autonomy, anti_slop |
| docker-compose.yml | YAML valido, services definidos, healthchecks, volumes, env_file |
| .github/workflows/ci.yml | YAML valido, on trigger, jobs, steps com run/uses |
| templates/content/content-calendar-template.md | Frontmatter Dataview-compatible |
Escopo: 3 landing page templates Criterio de sucesso: HTML valido, zero deps externas, responsive, SEO, < 100KB
| Template | Arquivo | Tamanho max |
|---|---|---|
| Minimal | minimal.html | < 100KB |
| Bold | bold.html | < 100KB |
| Gradient | gradient.html | < 100KB |
- HTML valido (tags abertas/fechadas corretamente)
<meta name="viewport">presente (responsive)<meta name="description">presente (SEO)<meta property="og:title">presente (OG tags)<meta property="og:description">presente- Zero
<link>para CDN externo - Zero
<script src="http">externo - Placeholders
{{...}}consistentes entre templates - Secoes: hero, features, social proof, CTA, footer
- Tamanho < 100KB
Escopo: Infraestrutura Docker Criterio de sucesso: Dockerfile valido, compose valido, no secrets baked
Dockerfile— FROM com imagem base, COPY, RUN, EXPOSE, HEALTHCHECKDockerfile— Multi-stage build (builder + runtime)docker-compose.yml— 3 services definidos (social-publish, social-discover, obsidian-vault)docker-compose.yml— env_file ou environment com varsdocker-compose.yml— healthcheck por service.dockerignore— Exclui: .env, .git, pycache, .venv, *.key, *.pem.env.example— Todas vars documentadas, NENHUM valor real.env.example— Cobre: API keys (Twitter, LinkedIn, etc), vault path, autonomy, dry_run
Escopo: Todo o repositorio Criterio de sucesso: Zero secrets, zero injection vectors
- Nenhum API key hardcoded em .py, .md, .yaml, .json, .html
- Nenhum password, token, secret em texto plano
.env.examplesem valores reais (apenas placeholders comoyour_api_key_here)brand-voice.example.yamlsem dados reais
- Pydantic models com field_validator em inputs externos
- YAML loading usa
yaml.safe_load(naoyaml.load) - Path traversal prevention em vault_ops.py
- HTML generator escapa user input (XSS prevention)
- preview-before-publish intercepta ANTES de publicar
- dry-run-guard bloqueia chamadas externas em modo dry-run
- audit-logger registra TODAS operacoes externas
- circuit-breaker protege contra falhas cascata
- Dockerfile nao copia .env para imagem
- .dockerignore exclui credenciais
- Nenhum USER root no container final (ou justificativa)
Escopo: Referencias entre componentes Criterio de sucesso: 100% das referencias resolvem para arquivos existentes
- CMO router.md referencia agentes que existem em agents/
- COMMAND.md subcommands delegam a agentes que existem
- plugin.json por convenção → commands/grow.md existe
- plugin.json skills[] → skills/*/ existem
- plugin.json agents[] → agents/*/ existem
- plugin.json hooks[] → hooks/*.md existem
- output-contracts.md referencia skills existentes
- Hooks referenciam tool names MCP validos
- scheduler.py agent references existem em agents/
- init.py exporta modulos que existem no filesystem
Escopo: Todos os docs Criterio de sucesso: Todas secoes obrigatorias presentes
- Descricao do projeto
- Features list
- Quick start guide (3 opcoes: plugin, Docker, manual)
- Configuracao (brand-voice.yaml)
- Usage examples (/grow commands)
- Arquitetura (diagrama ou descricao)
- Setup instructions
- Coding standards
- PR process
- Testing requirements
- Cada diretorio principal tem README.md (agents, skills, hooks, commands, mcp-servers, shared-lib, templates, docs)
Escopo: Chains entre modulos Criterio de sucesso: Fluxos end-to-end funcionam
- Config → Autonomy: load_brand_voice() alimenta AutonomyManager corretamente
- Autonomy → Scheduler: ScheduledPublisher respeita autonomy level do config
- Config → HTML Generator: html_generator usa brand voice para personalizar copy
- CircuitBreaker → Retry: retry_with_backoff integra com circuit_breaker states
- CalendarEntry → Frontmatter: Serializa/deserializa roundtrip sem perda
- ScheduleConfig → CronJobs: prepare_cron_jobs gera prompts validos
- AuditLogger → All Operations: Todas operacoes externas geram audit entries
| Terminal | Categorias | Tipo |
|---|---|---|
| Backend Senior | CAT 1 (shared-lib pytest) | Automated |
| Data Egineer | CAT 2 (MCP server pytest) | Automated |
| Dev - Tech Lead | CAT 3-4 (imports + ruff) | Automated |
| CMO | CAT 5-6-7 (plugin + frontmatter + YAML) | Validation |
| Pesquisador | CAT 8 (HTML templates) | Validation |
| DevOps - Senior | CAT 9 (Docker) | Validation |
| Architect Master Senior | CAT 10 (security) | Audit |
| Roteirista | CAT 11-12 (cross-refs + docs) | Validation |
| LLM Expert | CAT 13 (integration tests) | Automated |
| Scrum Master | Documentacao de resultados | Tracking |
O projeto esta PRONTO PARA GITHUB quando:
- CAT 1: 100% unit tests shared-lib passing
- CAT 2: 100% unit tests MCP servers passing
- CAT 3: Zero ImportError em todos os modulos
- CAT 4: Zero erros ruff (ou apenas warnings aceitos)
- CAT 5: plugin.json valido com todas refs resolvidas
- CAT 6: 100% frontmatters YAML validos
- CAT 7: Todos YAMLs de config validos
- CAT 8: 3 templates HTML validos, < 100KB, zero deps externas
- CAT 9: Dockerfile e docker-compose validos
- CAT 10: Zero secrets hardcoded, zero injection vectors
- CAT 11: 100% cross-references resolvidas
- CAT 12: Docs completos com todas secoes
- CAT 13: Integration chains funcionando
Resultado esperado: Projeto pronto, testado, seguro e documentado para GitHub.