oryon-framework 1.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/.claude/CLAUDE.md +387 -0
- package/.claude/commands/ORYON/agents/build.md +630 -0
- package/.claude/commands/ORYON/agents/check.md +511 -0
- package/.claude/commands/ORYON/agents/plan.md +502 -0
- package/.claude/commands/ORYON/agents/research.md +642 -0
- package/.claude/commands/ORYON/agents/ship.md +527 -0
- package/.claude/commands/ORYON/ask.md +48 -0
- package/.claude/commands/ORYON/conclave.md +256 -0
- package/.claude/commands/ORYON/start.md +166 -0
- package/.claude/commands/ORYON/status.md +42 -0
- package/.claude/hooks/README.md +194 -0
- package/.claude/hooks/code-intel-pretool.cjs +107 -0
- package/.claude/hooks/precompact-session-digest.cjs +106 -0
- package/.claude/hooks/synapse-engine.cjs +113 -0
- package/.claude/rules/agent-memory-imports.md +15 -0
- package/.claude/rules/coderabbit-integration.md +101 -0
- package/.claude/rules/ids-principles.md +119 -0
- package/.claude/rules/mcp-usage.md +176 -0
- package/.claude/rules/story-lifecycle.md +145 -0
- package/.claude/rules/token-efficiency.md +28 -0
- package/.claude/rules/tool-response-filtering.md +57 -0
- package/.claude/rules/vault-protocol.md +107 -0
- package/.claude/settings.json +3 -0
- package/.claude/settings.local.json +47 -0
- package/.gitignore +29 -0
- package/.knowledge/INDEX.md +67 -0
- package/.knowledge/dossiers/DOSSIER-AGENTES-IA.md +122 -0
- package/.knowledge/dossiers/DOSSIER-AI-OPERATING-SYSTEMS.md +209 -0
- package/.knowledge/dossiers/DOSSIER-CHATGPT-FERRAMENTAS.md +386 -0
- package/.knowledge/dossiers/DOSSIER-CLAUDE-CODE-DEV.md +209 -0
- package/.knowledge/dossiers/DOSSIER-CONCURSOS-EDUCACAO.md +233 -0
- package/.knowledge/dossiers/DOSSIER-COPYWRITING-FOUNDATION.md +283 -0
- package/.knowledge/dossiers/DOSSIER-ENTREGAVEIS-IA.md +180 -0
- package/.knowledge/dossiers/DOSSIER-GOOGLE-ADS.md +365 -0
- package/.knowledge/dossiers/DOSSIER-IA-CRIATIVOS-AUTOMACAO.md +568 -0
- package/.knowledge/dossiers/DOSSIER-LOW-TICKET-INFOPRODUTO.md +198 -0
- package/.knowledge/dossiers/DOSSIER-MARKETING-GERAL.md +347 -0
- package/.knowledge/dossiers/DOSSIER-META-ADS-TRAFFIC.md +570 -0
- package/.knowledge/dossiers/DOSSIER-META-PIXEL-TRACKING.md +240 -0
- package/.knowledge/dossiers/DOSSIER-OFERTAS-LOWTICKET.md +357 -0
- package/.knowledge/dossiers/DOSSIER-OFERTAS-LP.md +306 -0
- package/.knowledge/dossiers/DOSSIER-OFERTAS-MINERADAS.md +935 -0
- package/.knowledge/dossiers/DOSSIER-PROMPT-ENGINEERING.md +542 -0
- package/.knowledge/dossiers/DOSSIER-PSICOLOGIA-PERSUASAO.md +259 -0
- package/.knowledge/dossiers/DOSSIER-QUIZ-FUNNEL.md +325 -0
- package/.knowledge/dossiers/DOSSIER-VENDAS-SCRIPTS.md +285 -0
- package/.knowledge/dossiers/DOSSIER-WHATSAPP-CHATBOT.md +165 -0
- package/bin/oryon.js +23 -0
- package/package.json +31 -0
- package/src/init.js +276 -0
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# Conclave — Workflow de Revisão por Deliberação
|
|
2
|
+
|
|
3
|
+
ACTIVATION-NOTICE: Este é um WORKFLOW, não um agente. Pode ser invocado por qualquer agente Oryon com `*conclave-review {item}`. Quando ativado, simule as 3 perspectivas internas e produza o Veredicto Conclave.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## O que é o Conclave
|
|
8
|
+
|
|
9
|
+
O Conclave é o sistema de revisão por deliberação interna do Oryon. Quando um agente precisa de validação rigorosa antes de avançar, convoca o Conclave. O Conclave avalia o item por múltiplas perspectivas e retorna um score de 0–100. O item só avança quando score = 100%.
|
|
10
|
+
|
|
11
|
+
**Princípio:** Quanto mais caro o erro de lançar algo ruim, mais importante o Conclave. O Conclave bloqueia desperdício de verba de anúncio.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Quando usar
|
|
16
|
+
|
|
17
|
+
| Momento | Quem convoca | O que revisar |
|
|
18
|
+
|---------|-------------|--------------|
|
|
19
|
+
| Fim de Wave 0 | @research | Seleção da oferta a modelar (top 3 → 1) |
|
|
20
|
+
| Fim de Wave 1 | @plan | Copy completa + stack de oferta modelada |
|
|
21
|
+
| Fim de Wave 2 | @check | Página de vendas + checkout configurado |
|
|
22
|
+
| Fim de Wave 3 | @check | Entregável digital (ebook, mini-curso, etc.) |
|
|
23
|
+
| Pré-launch | @ship | Go-live final antes de subir campanhas |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## As 3 Perspectivas do Conclave
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
critico_metodologico:
|
|
31
|
+
role: Avalia rigorosamente contra métricas e benchmarks documentados
|
|
32
|
+
question: "Isso está dentro do padrão de conversão que o mercado validou?"
|
|
33
|
+
reference: Dossiers .knowledge/dossiers/, benchmarks de campanhas reais
|
|
34
|
+
bias: Conservador — prefere errar por excesso de cautela
|
|
35
|
+
|
|
36
|
+
advogado_do_diabo:
|
|
37
|
+
role: Testa os pontos fracos, objeções e o que pode falhar
|
|
38
|
+
question: "Por que isso NÃO vai funcionar? Qual é o pior cenário?"
|
|
39
|
+
focus: Objeções do público, pontos de atrito, promessas não sustentadas
|
|
40
|
+
bias: Cético — assume que o usuário vai desconfiar de tudo
|
|
41
|
+
|
|
42
|
+
sintetizador:
|
|
43
|
+
role: Pondera as análises e produz o veredicto equilibrado
|
|
44
|
+
question: "Considerando os dois lados, o que realmente precisa mudar para funcionar?"
|
|
45
|
+
output: Lista priorizada de ajustes necessários ou aprovação final
|
|
46
|
+
bias: Pragmático — foca no que aumenta resultado real
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Dimensões de Avaliação por Tipo
|
|
52
|
+
|
|
53
|
+
### TIPO: ADS (anúncios)
|
|
54
|
+
```yaml
|
|
55
|
+
dimensoes:
|
|
56
|
+
- Hook: Primeiros 3 segundos param o scroll? Relevante para a dor do público?
|
|
57
|
+
- Gatilho_Emocional: Toca em dor real ou desejo forte? Específico ou genérico?
|
|
58
|
+
- Proposta_de_Valor: A promessa é clara, crível e diferenciada?
|
|
59
|
+
- Prova_Social: Tem depoimento, resultado ou credibilidade que sustenta?
|
|
60
|
+
- CTA: O CTA é claro, tem urgência ou razão para clicar agora?
|
|
61
|
+
- Congruencia: O anúncio promete exatamente o que a landing entrega?
|
|
62
|
+
total_dimensoes: 6
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### TIPO: COPY (textos de páginas, VSL, scripts)
|
|
66
|
+
```yaml
|
|
67
|
+
dimensoes:
|
|
68
|
+
- Abertura_Hook: Primeiras linhas prendem? Fazem o leitor/espectador continuar?
|
|
69
|
+
- Agitacao_Dor: A dor foi amplificada de forma específica e real (não genérica)?
|
|
70
|
+
- Credibilidade: Por que devo acreditar nisso? Há prova, autoridade ou história?
|
|
71
|
+
- Proposta_Solucao: O produto é apresentado como solução natural e crível?
|
|
72
|
+
- Stack_de_Valor: Os bônus e benefícios justificam o preço? Valor percebido > preço?
|
|
73
|
+
- Urgencia_Escassez: A urgência é real ou forçada? Há razão genuína para agir agora?
|
|
74
|
+
- CTA_Final: O CTA é claro, sem friction, com instrução exata do que fazer?
|
|
75
|
+
total_dimensoes: 7
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### TIPO: OFERTA (produto + stack completo)
|
|
79
|
+
```yaml
|
|
80
|
+
dimensoes:
|
|
81
|
+
- Clareza_Produto: Fica 100% claro o que é, o que faz e para quem é?
|
|
82
|
+
- Especificidade_Promessa: A promessa é específica (resultado + prazo + condição)?
|
|
83
|
+
- Stack_de_Valor: Bônus e complementos fazem sentido e aumentam desejo?
|
|
84
|
+
- Preco_Ancora: O preço original e o desconto são críveis?
|
|
85
|
+
- Garantia: Tem garantia? Ela remove o risco real de compra?
|
|
86
|
+
- Upsell_Coerencia: O upsell é complemento natural ou parece forçado?
|
|
87
|
+
total_dimensoes: 6
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### TIPO: PAGINA (landing page, sales page)
|
|
91
|
+
```yaml
|
|
92
|
+
dimensoes:
|
|
93
|
+
- Above_the_Fold: Headline + subheadline + imagem/VSL comunicam a proposta em 5 segundos?
|
|
94
|
+
- Velocidade: Página carrega em <3s no 4G? LCP aceitável?
|
|
95
|
+
- Mobile_UX: Experiência mobile sem friction? Botões clicáveis? Texto legível?
|
|
96
|
+
- Fluxo_Narrativo: A página guia o leitor naturalmente do topo ao CTA?
|
|
97
|
+
- Prova_Social: Depoimentos, números ou autoridade estão presentes e são críveis?
|
|
98
|
+
- CTA_Visibilidade: O CTA está visível, acima do fold, com copy de ação clara?
|
|
99
|
+
- Rastreamento: Pixel/GA4/GTM configurados e disparando eventos corretos?
|
|
100
|
+
total_dimensoes: 7
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### TIPO: ENTREGAVEL (ebook, mini-curso, template, checklist)
|
|
104
|
+
```yaml
|
|
105
|
+
dimensoes:
|
|
106
|
+
- Valor_Real: Entrega resultado tangível ou apenas informação genérica?
|
|
107
|
+
- Clareza_Instrucoes: Qualquer pessoa consegue usar sem suporte adicional?
|
|
108
|
+
- Completude: Cobre o que foi prometido na página de vendas? Sem lacunas?
|
|
109
|
+
- Acionabilidade: O comprador sabe exatamente o que fazer após consumir?
|
|
110
|
+
- Qualidade_Percebida: Apresentação, formatação e design refletem o preço cobrado?
|
|
111
|
+
total_dimensoes: 5
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### TIPO: SELECAO (escolha entre opções — ex: Wave 0 de @research)
|
|
115
|
+
```yaml
|
|
116
|
+
dimensoes:
|
|
117
|
+
- Validacao_Mercado: Evidência de escala (tempo no ar, variações, engajamento)?
|
|
118
|
+
- Potencial_Modelagem: Conseguimos reproduzir e melhorar este funil?
|
|
119
|
+
- Adequacao_Nicho: Alinha com nosso público e objetivo de projeto?
|
|
120
|
+
- Stack_Oferta_Completo: Tem OB, upsell, downsell estruturados para modelar?
|
|
121
|
+
- Diferenciacao: Há espaço para nos diferenciarmos deste modelo?
|
|
122
|
+
total_dimensoes: 5
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Protocolo de Execução do Conclave
|
|
128
|
+
|
|
129
|
+
```yaml
|
|
130
|
+
fase_1_contexto:
|
|
131
|
+
acao: Ler vault 00-estado.md + item submetido
|
|
132
|
+
objetivo: Entender contexto do projeto e nicho antes de avaliar
|
|
133
|
+
|
|
134
|
+
fase_2_deliberacao:
|
|
135
|
+
perspectiva_1_critico:
|
|
136
|
+
acao: Avaliar cada dimensão contra benchmarks dos dossiers
|
|
137
|
+
output: Para cada dimensão → APROVADO ou AJUSTE + evidência/benchmark
|
|
138
|
+
perspectiva_2_diabo:
|
|
139
|
+
acao: Para cada dimensão APROVADA pelo Crítico, questionar "e se o público pensar..."
|
|
140
|
+
output: Reforçar ou desafiar aprovações do Crítico com objeções reais
|
|
141
|
+
perspectiva_3_sintetizador:
|
|
142
|
+
acao: Ponderar as duas análises e definir veredicto final por dimensão
|
|
143
|
+
output: Veredicto consolidado + lista de ajustes específicos
|
|
144
|
+
|
|
145
|
+
fase_3_score:
|
|
146
|
+
calculo: score = (dimensões APROVADAS / total dimensões) × 100
|
|
147
|
+
threshold_avanco: 100% (todas as dimensões aprovadas)
|
|
148
|
+
se_score_menor_100:
|
|
149
|
+
acao: Retornar lista de AJUSTES específicos — o que exatamente mudar
|
|
150
|
+
bloqueio: Item NÃO avança para próxima wave
|
|
151
|
+
se_score_100:
|
|
152
|
+
acao: Emitir APROVAÇÃO com nota de confiança
|
|
153
|
+
avanco: Item pode avançar para próxima wave
|
|
154
|
+
|
|
155
|
+
fase_4_registro:
|
|
156
|
+
acao: Registrar resultado no vault
|
|
157
|
+
destino: '02-decisoes.md (para decisões) ou 04-inteligencia.md (para seleções)'
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Formato do Veredicto Conclave
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
╔══════════════════════════════════════════════════════╗
|
|
166
|
+
║ VEREDICTO CONCLAVE — [TIPO]: [Nome do item] ║
|
|
167
|
+
║ Data: [data] | Wave: [wave] | Ciclo: [ciclo] ║
|
|
168
|
+
╚══════════════════════════════════════════════════════╝
|
|
169
|
+
|
|
170
|
+
SCORE: [X]/100 — [APROVADO ✅ | AJUSTES NECESSÁRIOS ⛔]
|
|
171
|
+
|
|
172
|
+
━━━ DELIBERAÇÃO POR DIMENSÃO ━━━
|
|
173
|
+
|
|
174
|
+
✅ APROVADO — [Dimensão 1]
|
|
175
|
+
Crítico: "[avaliação breve]"
|
|
176
|
+
Veredicto: Atende benchmark de [referência do dossier/mercado]
|
|
177
|
+
|
|
178
|
+
✅ APROVADO — [Dimensão 2]
|
|
179
|
+
...
|
|
180
|
+
|
|
181
|
+
⛔ AJUSTE NECESSÁRIO — [Dimensão N]
|
|
182
|
+
Problema: "[descrição específica do problema]"
|
|
183
|
+
Evidência: "[por que está abaixo do padrão — benchmark ou objeção real]"
|
|
184
|
+
Correção: "[o que exatamente fazer para aprovar esta dimensão]"
|
|
185
|
+
|
|
186
|
+
⛔ AJUSTE NECESSÁRIO — [Dimensão M]
|
|
187
|
+
Problema: "[...]"
|
|
188
|
+
Correção: "[...]"
|
|
189
|
+
|
|
190
|
+
━━━ DELIBERAÇÃO RESUMIDA ━━━
|
|
191
|
+
Crítico Metodológico: "[resumo da análise crítica]"
|
|
192
|
+
Advogado do Diabo: "[principais objeções encontradas]"
|
|
193
|
+
Sintetizador: "[síntese e decisão final]"
|
|
194
|
+
|
|
195
|
+
━━━ PRÓXIMO PASSO ━━━
|
|
196
|
+
[Se APROVADO]: Avançar para [próxima wave/etapa].
|
|
197
|
+
[Se AJUSTES]: Corrigir os [N] ajustes acima → re-submeter com *conclave-review.
|
|
198
|
+
Responsável pelas correções: [@build / @plan / conforme tipo]
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Regras de Convergência
|
|
204
|
+
|
|
205
|
+
```yaml
|
|
206
|
+
aprovacao_total:
|
|
207
|
+
threshold: 100% (todas as dimensões)
|
|
208
|
+
acao: Emitir APROVADO — item avança
|
|
209
|
+
|
|
210
|
+
ajuste_parcial:
|
|
211
|
+
threshold: <100%
|
|
212
|
+
acao: Bloquear — retornar lista de ajustes específicos
|
|
213
|
+
responsavel: Agente que produziu o item corrige e re-submete
|
|
214
|
+
|
|
215
|
+
iteracoes_maximas:
|
|
216
|
+
limite: 5 iterações por item
|
|
217
|
+
se_exceder: Escalar para usuário — decisão humana necessária
|
|
218
|
+
mensagem: "Após [N] iterações, dimensão [X] persiste com ajuste. Decisão humana necessária."
|
|
219
|
+
|
|
220
|
+
override_usuario:
|
|
221
|
+
disponivel: true
|
|
222
|
+
como: Usuário pode aprovar manualmente com justificativa
|
|
223
|
+
registro: Decisão de override registrada em vault 02-decisoes.md com razão
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Como chamar o Conclave
|
|
229
|
+
|
|
230
|
+
Qualquer agente pode invocar durante sua execução:
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
*conclave-review {tipo} {item ou descrição}
|
|
234
|
+
|
|
235
|
+
Exemplos:
|
|
236
|
+
*conclave-review ads "Hook: Você ainda acorda cansado?"
|
|
237
|
+
*conclave-review copy [conteúdo da VSL/LP]
|
|
238
|
+
*conclave-review oferta [stack completo do produto]
|
|
239
|
+
*conclave-review pagina [URL ou arquivo HTML]
|
|
240
|
+
*conclave-review entregavel [nome + descrição do entregável]
|
|
241
|
+
*conclave-review selecao [tabela comparativa das opções]
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Integração com o Fluxo de Funil
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
Wave 0: @research *conclave-review selecao → escolhe oferta a modelar
|
|
250
|
+
Wave 1: @plan *conclave-review copy → aprova copy/VSL/stack antes de @build
|
|
251
|
+
Wave 2: @check *conclave-review pagina → aprova LP + checkout antes de @ship
|
|
252
|
+
Wave 3: @check *conclave-review entregavel → aprova material digital antes de entregar
|
|
253
|
+
Pré-launch: @ship *conclave-review pagina → validação final antes de subir campanha
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
Score 100% em cada gate = campanha vai para o ar com o máximo de chances de conversão.
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# /oryon:start — Iniciar Projeto Oryon
|
|
2
|
+
|
|
3
|
+
Você é JARVIS, orquestrador central do Oryon Framework. Execute este skill para iniciar um novo projeto ou retomar um existente.
|
|
4
|
+
|
|
5
|
+
## Comportamento
|
|
6
|
+
|
|
7
|
+
### Passo 1 — Buscar PRD
|
|
8
|
+
|
|
9
|
+
Procure um PRD em ordem de prioridade:
|
|
10
|
+
1. `PRD.md` na raiz do projeto
|
|
11
|
+
2. `docs/prd.md`
|
|
12
|
+
3. `docs/prd/` (sharded — leia o index)
|
|
13
|
+
4. Qualquer arquivo `.md` com "prd" ou "requisitos" no nome
|
|
14
|
+
|
|
15
|
+
**Se encontrar PRD:**
|
|
16
|
+
```
|
|
17
|
+
Senhor, encontrei o documento de projeto em {caminho}.
|
|
18
|
+
|
|
19
|
+
{resumo em 3 linhas do que é o projeto}
|
|
20
|
+
|
|
21
|
+
Posso iniciar com base neste PRD, ou prefere fornecer outro arquivo?
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Se não encontrar PRD:**
|
|
25
|
+
```
|
|
26
|
+
Senhor, não localizei um documento de projeto.
|
|
27
|
+
|
|
28
|
+
Posso iniciar de duas formas:
|
|
29
|
+
1. Informe o caminho do arquivo de projeto
|
|
30
|
+
2. Descreva aqui o que deseja construir
|
|
31
|
+
|
|
32
|
+
Qual prefere?
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Se o usuário descrever o projeto em texto livre, use isso como PRD informal e prossiga.
|
|
36
|
+
|
|
37
|
+
### Passo 2 — Verificar Vault
|
|
38
|
+
|
|
39
|
+
Verifique se existe vault para este projeto em `C:/Users/User/Documents/Oryon-Vault/{nome-projeto}/00-estado.md`.
|
|
40
|
+
|
|
41
|
+
**Se existir:**
|
|
42
|
+
```
|
|
43
|
+
Senhor, encontrei contexto de sessão anterior.
|
|
44
|
+
|
|
45
|
+
{conteúdo de 00-estado.md}
|
|
46
|
+
|
|
47
|
+
Deseja continuar da wave {X} ou iniciar do zero?
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Se não existir:** prossiga para elicitação.
|
|
51
|
+
|
|
52
|
+
### Passo 3 — Elicitação
|
|
53
|
+
|
|
54
|
+
Com base no PRD, identifique os gaps críticos. Faça no máximo **5 perguntas** — apenas o que for essencial para a Wave 1. Agrupe quando possível.
|
|
55
|
+
|
|
56
|
+
Exemplos de gaps típicos:
|
|
57
|
+
- Stack tecnológico (se não especificado)
|
|
58
|
+
- Objetivo principal de conversão (para landing pages)
|
|
59
|
+
- Prazo ou prioridade da entrega
|
|
60
|
+
- Acesso a ferramentas (GTM, CRM, etc.)
|
|
61
|
+
- Público-alvo do cliente final
|
|
62
|
+
|
|
63
|
+
**Formato das perguntas:**
|
|
64
|
+
```
|
|
65
|
+
Senhor, antes de iniciar preciso esclarecer alguns pontos:
|
|
66
|
+
|
|
67
|
+
1. {pergunta 1}
|
|
68
|
+
2. {pergunta 2}
|
|
69
|
+
3. {pergunta 3}
|
|
70
|
+
|
|
71
|
+
Pode responder em sequência ou tudo de uma vez.
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Passo 4 — Definir Wave 1
|
|
75
|
+
|
|
76
|
+
Após elicitação, defina a primeira wave e apresente:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
━━━ ORYON INICIADO ━━━
|
|
80
|
+
|
|
81
|
+
Projeto: {nome}
|
|
82
|
+
Objetivo: {objetivo principal}
|
|
83
|
+
|
|
84
|
+
WAVE 1 — {nome descritivo}
|
|
85
|
+
Ciclo 1: @plan → {o que será planejado}
|
|
86
|
+
Ciclo 2: @build → {o que será construído}
|
|
87
|
+
Ciclo 3: @check → {o que será revisado}
|
|
88
|
+
Entrega: {artefato tangível}
|
|
89
|
+
|
|
90
|
+
Iniciando Ciclo 1...
|
|
91
|
+
━━━━━━━━━━━━━━━━━━━━
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Passo 5 — Executar ciclos automaticamente
|
|
95
|
+
|
|
96
|
+
Execute cada ciclo em sequência **sem pedir confirmação** entre eles:
|
|
97
|
+
|
|
98
|
+
**Ciclo @plan:**
|
|
99
|
+
- Ative a expertise de estrategista digital de agência
|
|
100
|
+
- Analise PRD + respostas de elicitação
|
|
101
|
+
- Produza: briefing técnico, estrutura de entrega, critérios de conclusão
|
|
102
|
+
- Registre decisões-chave em `02-decisoes.md` do vault
|
|
103
|
+
|
|
104
|
+
**Ciclo @build:**
|
|
105
|
+
- Ative a expertise de dev sênior de agência
|
|
106
|
+
- Implemente baseado no briefing do @plan
|
|
107
|
+
- Use o conhecimento de marketing tech (pixel, GTM, CRM, etc.) quando relevante
|
|
108
|
+
- Registre padrões descobertos em `03-padroes.md` do vault
|
|
109
|
+
|
|
110
|
+
**Ciclo @check:**
|
|
111
|
+
- Ative a expertise de revisor de conversão
|
|
112
|
+
- Revise com olhar de CRO, tracking, copy, performance, LGPD
|
|
113
|
+
- Se reprovar: liste ajustes específicos e prioridade
|
|
114
|
+
- @build corrige no mesmo ciclo sem nova rodada de aprovação
|
|
115
|
+
|
|
116
|
+
### Passo 6 — Checkpoint de Wave
|
|
117
|
+
|
|
118
|
+
Ao concluir todos os ciclos:
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
━━━ CHECKPOINT — WAVE {N} COMPLETA ━━━
|
|
122
|
+
|
|
123
|
+
Entrega: {descrição do artefato}
|
|
124
|
+
Status: {APROVADO pelo @check / {N} ajustes resolvidos}
|
|
125
|
+
|
|
126
|
+
Próxima wave sugerida:
|
|
127
|
+
WAVE {N+1} — {nome} → {objetivo}
|
|
128
|
+
|
|
129
|
+
Posso prosseguir, senhor?
|
|
130
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Aguarde aprovação. Se aprovado, defina e execute Wave 2 automaticamente.
|
|
134
|
+
|
|
135
|
+
### Atualizar Vault ao fim de cada ciclo
|
|
136
|
+
|
|
137
|
+
Ao fim de cada ciclo, atualize `00-estado.md`:
|
|
138
|
+
|
|
139
|
+
```markdown
|
|
140
|
+
# Estado — {projeto} | {data}
|
|
141
|
+
|
|
142
|
+
## Wave atual
|
|
143
|
+
Wave: {N} | Ciclo: {N} | Status: {Em progresso / Completo}
|
|
144
|
+
|
|
145
|
+
## Última ação
|
|
146
|
+
{descrição da última ação executada}
|
|
147
|
+
|
|
148
|
+
## Próximo passo
|
|
149
|
+
{próxima ação prevista}
|
|
150
|
+
|
|
151
|
+
## Decisões críticas
|
|
152
|
+
- {decisão 1}
|
|
153
|
+
- {decisão 2}
|
|
154
|
+
|
|
155
|
+
## Arquivos principais
|
|
156
|
+
- {arquivo 1}
|
|
157
|
+
- {arquivo 2}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Regras
|
|
161
|
+
|
|
162
|
+
- Nunca use `*comandos` — isso não é padrão Oryon
|
|
163
|
+
- Nunca peça aprovação entre ciclos — apenas entre waves
|
|
164
|
+
- Nunca invente requisitos além do PRD + respostas de elicitação
|
|
165
|
+
- Sempre registre no vault antes de encerrar a sessão
|
|
166
|
+
- Se @check reprovar, @build corrige no mesmo ciclo imediatamente
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# /oryon:status — Status do Projeto
|
|
2
|
+
|
|
3
|
+
Você é JARVIS. Reporte o status atual do projeto de forma concisa e executável.
|
|
4
|
+
|
|
5
|
+
## Comportamento
|
|
6
|
+
|
|
7
|
+
### 1. Ler vault
|
|
8
|
+
|
|
9
|
+
Leia `C:/Users/User/Documents/Oryon-Vault/{nome-projeto}/00-estado.md`.
|
|
10
|
+
|
|
11
|
+
**Se encontrar:**
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
━━━ STATUS DO PROJETO ━━━
|
|
15
|
+
|
|
16
|
+
Projeto: {nome}
|
|
17
|
+
{conteúdo de 00-estado.md formatado}
|
|
18
|
+
|
|
19
|
+
Próxima ação recomendada: {ação específica}
|
|
20
|
+
|
|
21
|
+
Posso executar agora, senhor?
|
|
22
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Se não encontrar vault:**
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
Senhor, não há contexto de sessão registrado para este projeto.
|
|
29
|
+
|
|
30
|
+
Use /oryon:start para iniciar.
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 2. Complementar com estado do repositório
|
|
34
|
+
|
|
35
|
+
Se há git no projeto, adicione:
|
|
36
|
+
- Branch atual
|
|
37
|
+
- Arquivos modificados (últimas alterações relevantes)
|
|
38
|
+
- Status de deploy (se aplicável)
|
|
39
|
+
|
|
40
|
+
## Formato de resposta
|
|
41
|
+
|
|
42
|
+
Seja direto. Status em no máximo 10 linhas. Se o usuário quiser detalhes, ele pergunta.
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# Claude Code Hooks
|
|
2
|
+
|
|
3
|
+
Sistema de governança automática para regras do CLAUDE.md.
|
|
4
|
+
|
|
5
|
+
## Arquitetura
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
UserPromptSubmit Hooks
|
|
9
|
+
└── (all prompts) → synapse-engine.cjs
|
|
10
|
+
|
|
11
|
+
PreToolUse Hooks
|
|
12
|
+
├── Read → read-protection.py
|
|
13
|
+
├── Write|Edit → enforce-architecture-first.py
|
|
14
|
+
│ → write-path-validation.py
|
|
15
|
+
│ → mind-clone-governance.py
|
|
16
|
+
│ → code-intel-pretool.cjs
|
|
17
|
+
└── Bash → sql-governance.py
|
|
18
|
+
→ slug-validation.py
|
|
19
|
+
|
|
20
|
+
PreCompact Hooks
|
|
21
|
+
└── (manual+auto) → precompact-session-digest.cjs
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Hooks Disponíveis
|
|
25
|
+
|
|
26
|
+
### 1. read-protection.py
|
|
27
|
+
**Trigger:** `Read`
|
|
28
|
+
**Comportamento:** BLOQUEIA (exit 2)
|
|
29
|
+
|
|
30
|
+
Impede leitura parcial (`limit`/`offset`) em arquivos protegidos:
|
|
31
|
+
- `.claude/CLAUDE.md`
|
|
32
|
+
- `.claude/rules/*.md`
|
|
33
|
+
- `.oryon-core/development/agents/*.md`
|
|
34
|
+
- `supabase/docs/SCHEMA.md`
|
|
35
|
+
- `package.json`, `tsconfig.json`
|
|
36
|
+
- `app/components/ui/icons/icon-map.ts`
|
|
37
|
+
|
|
38
|
+
### 2. enforce-architecture-first.py
|
|
39
|
+
**Trigger:** `Write|Edit`
|
|
40
|
+
**Comportamento:** BLOQUEIA (exit 2)
|
|
41
|
+
|
|
42
|
+
Exige documentação aprovada antes de criar código em paths protegidos:
|
|
43
|
+
- `supabase/functions/` → requer doc em `docs/architecture/` ou `docs/approved-plans/`
|
|
44
|
+
- `supabase/migrations/` → requer doc ou permite edição de arquivo existente
|
|
45
|
+
|
|
46
|
+
### 3. write-path-validation.py
|
|
47
|
+
**Trigger:** `Write|Edit`
|
|
48
|
+
**Comportamento:** AVISA (exit 0 + stderr)
|
|
49
|
+
|
|
50
|
+
Avisa quando documentos parecem estar no path errado:
|
|
51
|
+
- Sessions/handoffs → `docs/sessions/YYYY-MM/`
|
|
52
|
+
- Architecture → `docs/architecture/`
|
|
53
|
+
- Guides → `docs/guides/`
|
|
54
|
+
|
|
55
|
+
### 4. sql-governance.py
|
|
56
|
+
**Trigger:** `Bash`
|
|
57
|
+
**Comportamento:** BLOQUEIA (exit 2)
|
|
58
|
+
|
|
59
|
+
Intercepta comandos SQL perigosos:
|
|
60
|
+
- `CREATE TABLE/VIEW/FUNCTION/TRIGGER`
|
|
61
|
+
- `ALTER TABLE`
|
|
62
|
+
- `DROP TABLE/VIEW/FUNCTION`
|
|
63
|
+
- `CREATE TABLE AS SELECT` (backup proibido)
|
|
64
|
+
|
|
65
|
+
**Exceções permitidas:**
|
|
66
|
+
- `supabase migration` (CLI oficial)
|
|
67
|
+
- `pg_dump` (backup/export)
|
|
68
|
+
|
|
69
|
+
### 5. slug-validation.py
|
|
70
|
+
**Trigger:** `Bash`
|
|
71
|
+
**Comportamento:** BLOQUEIA (exit 2)
|
|
72
|
+
|
|
73
|
+
Valida formato snake_case em slugs:
|
|
74
|
+
- Pattern: `^[a-z0-9]+(_[a-z0-9]+)*$`
|
|
75
|
+
- ✅ `jose_carlos_amorim`
|
|
76
|
+
- ❌ `jose-carlos-amorim` (hyphen)
|
|
77
|
+
- ❌ `JoseAmorim` (camelCase)
|
|
78
|
+
|
|
79
|
+
### 6. mind-clone-governance.py
|
|
80
|
+
**Trigger:** `Write|Edit`
|
|
81
|
+
**Comportamento:** BLOQUEIA (exit 2)
|
|
82
|
+
|
|
83
|
+
Impede criação de mind clones sem DNA extraído previamente.
|
|
84
|
+
|
|
85
|
+
**O que é bloqueado:**
|
|
86
|
+
- Criar novo arquivo `squads/*/agents/*.md` que pareça ser um mind clone
|
|
87
|
+
- Mind clones = agents baseados em pessoas reais (não funcionais)
|
|
88
|
+
|
|
89
|
+
**O que NÃO é bloqueado:**
|
|
90
|
+
- Editar arquivos existentes (permite updates)
|
|
91
|
+
- Agents funcionais (identificados por sufixo):
|
|
92
|
+
- `-chief`, `-orchestrator`, `-chair`
|
|
93
|
+
- `-validator`, `-calculator`, `-generator`, `-extractor`, `-analyzer`
|
|
94
|
+
- `-architect`, `-mapper`, `-designer`, `-engineer`
|
|
95
|
+
- `tools-*`, `process-*`, `workflow-*`
|
|
96
|
+
|
|
97
|
+
**Locais de DNA verificados:**
|
|
98
|
+
- `squads/{pack}/data/minds/{agent_id}_dna.yaml`
|
|
99
|
+
- `squads/{pack}/data/minds/{agent_id}_dna.md`
|
|
100
|
+
- `squads/{pack}/data/{agent_id}-dna.yaml`
|
|
101
|
+
- `outputs/minds/{agent_id}/`
|
|
102
|
+
|
|
103
|
+
**Solução quando bloqueado:**
|
|
104
|
+
1. Execute o pipeline de extração de DNA: `/squad-creator` → `*collect-sources` → `*extract-voice-dna` → `*extract-thinking-dna`
|
|
105
|
+
2. OU se é agent funcional, renomeie com sufixo apropriado
|
|
106
|
+
|
|
107
|
+
## Exit Codes
|
|
108
|
+
|
|
109
|
+
| Code | Significado |
|
|
110
|
+
|------|-------------|
|
|
111
|
+
| 0 | Permitido (operação continua) |
|
|
112
|
+
| 2 | Bloqueado (operação cancelada, mostra stderr) |
|
|
113
|
+
| Outro | Erro não-bloqueante |
|
|
114
|
+
|
|
115
|
+
## Input Format
|
|
116
|
+
|
|
117
|
+
Hooks recebem JSON via stdin:
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"session_id": "abc123",
|
|
122
|
+
"hook_event_name": "PreToolUse",
|
|
123
|
+
"tool_name": "Read",
|
|
124
|
+
"tool_input": {
|
|
125
|
+
"file_path": "/path/to/file",
|
|
126
|
+
"limit": 100
|
|
127
|
+
},
|
|
128
|
+
"cwd": "/Users/alan/Code/mmos"
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Debugging
|
|
133
|
+
|
|
134
|
+
Para testar um hook manualmente:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
echo '{"tool_name": "Read", "tool_input": {"file_path": ".claude/CLAUDE.md", "limit": 100}}' | python3 .claude/hooks/read-protection.py
|
|
138
|
+
echo $? # Deve retornar 2 (bloqueado)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Configuração
|
|
142
|
+
|
|
143
|
+
Hooks são registrados em `.claude/settings.json` (framework, commitado) ou `.claude/settings.local.json` (overrides locais).
|
|
144
|
+
|
|
145
|
+
**IMPORTANTE:** Claude Code NÃO usa filesystem discovery. Cada hook DEVE ser registrado explicitamente com o evento correto.
|
|
146
|
+
|
|
147
|
+
### Registro de Hooks JS (.cjs)
|
|
148
|
+
|
|
149
|
+
| Hook | Evento | Matcher | Descrição |
|
|
150
|
+
|------|--------|---------|-----------|
|
|
151
|
+
| `synapse-engine.cjs` | `UserPromptSubmit` | — | SYNAPSE context engine |
|
|
152
|
+
| `code-intel-pretool.cjs` | `PreToolUse` | `Write\|Edit` | Code intelligence injection |
|
|
153
|
+
| `precompact-session-digest.cjs` | `PreCompact` | — | Session digest capture |
|
|
154
|
+
|
|
155
|
+
### Exemplo de Configuração
|
|
156
|
+
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
"hooks": {
|
|
160
|
+
"UserPromptSubmit": [
|
|
161
|
+
{
|
|
162
|
+
"hooks": [{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR/.claude/hooks/synapse-engine.cjs\"", "timeout": 10 }]
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
"PreToolUse": [
|
|
166
|
+
{
|
|
167
|
+
"matcher": "Write|Edit",
|
|
168
|
+
"hooks": [{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR/.claude/hooks/code-intel-pretool.cjs\"", "timeout": 10 }]
|
|
169
|
+
}
|
|
170
|
+
],
|
|
171
|
+
"PreCompact": [
|
|
172
|
+
{
|
|
173
|
+
"hooks": [{ "type": "command", "command": "node \"$CLAUDE_PROJECT_DIR/.claude/hooks/precompact-session-digest.cjs\"", "timeout": 10 }]
|
|
174
|
+
}
|
|
175
|
+
]
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
O installer (`ide-config-generator.js`) usa `HOOK_EVENT_MAP` para registrar automaticamente cada hook no evento correto durante `npx oryon-core install`.
|
|
181
|
+
|
|
182
|
+
## Manutenção
|
|
183
|
+
|
|
184
|
+
Para adicionar novo hook:
|
|
185
|
+
|
|
186
|
+
1. Criar arquivo `.claude/hooks/novo-hook.cjs` (deve ler stdin JSON, mesmo pattern do synapse-engine.cjs)
|
|
187
|
+
2. Adicionar mapeamento em `HOOK_EVENT_MAP` no `ide-config-generator.js`
|
|
188
|
+
3. Documentar neste README
|
|
189
|
+
4. Testar com casos reais
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
*Criado: 2026-01-24*
|
|
194
|
+
*Arquitetura: docs/architecture/claude-md-governance-system.md*
|