feat: adiciona 12 plugins Descomplicar ao marketplace

Plugins: automacao, crm-ops, design-media, dev-tools, gestao,
infraestrutura, marketing, negocio, perfex-dev, project-manager,
wordpress + hello-plugin (existente).

Totais: 83 skills, 44 agents, 12 datasets.json

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-07 21:41:24 +00:00
parent bcce928beb
commit 2cb3210962
209 changed files with 50869 additions and 0 deletions

View File

@@ -0,0 +1,97 @@
#!/bin/bash
# spec-gate.sh - PreToolUse hook for Write/Edit
# Avisa quando se tenta editar ficheiros sem SPEC.md aprovado
# Modo: SOFT (warnings only) - mudar exit 0 para exit 2 para hard mode
# Autor: Descomplicar® | 2026-02-07
INPUT=$(cat)
TOOL_NAME=$(echo "$INPUT" | jq -r '.tool_name // empty' 2>/dev/null)
# So intercepta Write e Edit
if [ "$TOOL_NAME" != "Write" ] && [ "$TOOL_NAME" != "Edit" ]; then
exit 0
fi
# Extrair file path
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty' 2>/dev/null)
# ========== BYPASSES ==========
# Sem file path
if [ -z "$FILE_PATH" ]; then
exit 0
fi
# Ficheiros de sistema
if echo "$FILE_PATH" | grep -qE '(\.claude/|CLAUDE\.md|settings\.json|\.env|\.claude-work/)'; then
exit 0
fi
# O proprio SPEC.md ou SPRINT.md
if echo "$FILE_PATH" | grep -qE '(SPEC\.md|SPRINT\.md)$'; then
exit 0
fi
# Ficheiros fora de pastas de projecto
if ! echo "$FILE_PATH" | grep -qE '^/media/ealmeida/Dados/(Dev|Arquivo_de_Clientes)/'; then
exit 0
fi
# Bypass temporario (30 min)
BYPASS_FILE="/tmp/claude-spec-gate-bypass"
if [ -f "$BYPASS_FILE" ]; then
BYPASS_AGE=$(( $(date +%s) - $(stat -c %Y "$BYPASS_FILE" 2>/dev/null || echo 0) ))
if [ "$BYPASS_AGE" -lt 1800 ]; then
exit 0
else
rm -f "$BYPASS_FILE"
fi
fi
# Docs e configs (CHANGELOG, README, .txt, docs/)
if echo "$FILE_PATH" | grep -qiE '(CHANGELOG|README|\.txt$|\.json$|docs/|\.desk-project)'; then
exit 0
fi
# Plan files
if echo "$FILE_PATH" | grep -qE '\.claude/plans/'; then
exit 0
fi
# ========== SPEC CHECK ==========
DIR=$(dirname "$FILE_PATH")
SPEC_FOUND=""
# Procurar SPEC.md subindo ate 5 niveis
for i in 1 2 3 4 5; do
if [ -f "$DIR/SPEC.md" ]; then
SPEC_FOUND="$DIR/SPEC.md"
break
fi
PARENT=$(dirname "$DIR")
# Parar em raizes conhecidas
if [ "$PARENT" = "$DIR" ] || [ "$DIR" = "/media/ealmeida/Dados/Dev" ] || [ "$DIR" = "/media/ealmeida/Dados" ]; then
break
fi
DIR="$PARENT"
done
# Sem SPEC.md - aviso suave
if [ -z "$SPEC_FOUND" ]; then
echo "SPEC-GATE: Sem SPEC.md neste projecto. Considere /spec create antes de comecar."
exit 0 # soft mode: nao bloqueia
fi
# SPEC.md existe - verificar aprovacao
if grep -q '<!-- APPROVED:' "$SPEC_FOUND" 2>/dev/null; then
# Spec aprovado - tudo OK, silencio total
exit 0
fi
# Spec existe mas nao aprovado
echo "SPEC-GATE: SPEC.md existe mas NAO esta aprovado."
echo " Ficheiro: $SPEC_FOUND"
echo " Accao: /spec approve para aprovar, ou /spec bypass para quick fix (30min)"
exit 0 # soft mode: nao bloqueia
# Para hard mode, mudar a linha acima para: exit 2