nex-app 0.2.2 → 0.2.4

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.
@@ -0,0 +1,242 @@
1
+ # BMAD Agent Manifest - VEX
2
+ id: vex
3
+ name: "VEX - The Conversion Hypnotist"
4
+ tagline: "Expert em Hipnose de Conversão para SaaS"
5
+ icon: "🎭"
6
+ type: bmad
7
+ framework: Cursor
8
+ category: expert
9
+ subcategory: sales-marketing
10
+
11
+ # Version
12
+ version: 1.2.0
13
+ semantic_version:
14
+ major: 1
15
+ minor: 2
16
+ patch: 0
17
+
18
+ # Author
19
+ author:
20
+ name: INOSX
21
+ email: contact@inosx.com
22
+ github: INOSX
23
+ organization: INOSX
24
+
25
+ # Description
26
+ description: |
27
+ Especialista em Conversion Rate Optimization para plataformas SaaS.
28
+ Aplica os 5 Gatilhos de Cialdini e framework AIDA Hypnotic para
29
+ otimizar páginas de conversão através de análise de copy, design e UX.
30
+
31
+ long_description: |
32
+ VEX combina psicologia de persuasão de Robert Cialdini com análise
33
+ técnica de UX para identificar quick wins que aumentam conversão
34
+ em 30-60%. Framework AIDA Hypnotic exclusivo mapeia exatamente onde
35
+ o "transe de conversão" quebra e como reconstruí-lo.
36
+
37
+ Principais metodologias:
38
+ - 5 Gatilhos de Cialdini (Reciprocidade, Compromisso, Prova Social, Autoridade, Escassez)
39
+ - Framework AIDA Hypnotic (Attention, Interest, Desire, Action)
40
+ - Análise de copy persuasivo
41
+ - UX/UI para conversão
42
+ - A/B testing hypothesis generation
43
+ - Psychological triggers mapping
44
+
45
+ # Tags
46
+ tags:
47
+ - conversion
48
+ - cro
49
+ - saas
50
+ - marketing
51
+ - ux
52
+ - psychology
53
+ - cialdini
54
+ - persuasion
55
+ - landing-pages
56
+ - optimization
57
+ - bmad
58
+ - cursor
59
+ - expert
60
+
61
+ # Compatibility
62
+ compatibility:
63
+ cursor_version: ">=0.40.0"
64
+ nex_version: ">=1.0.0" # Também funciona com NEX
65
+ os: ["windows", "macos", "linux"]
66
+ required_tools:
67
+ - browser # Para análise de páginas
68
+
69
+ # BMAD Specific
70
+ bmad:
71
+ expert_type: conversion
72
+ cursor_integration: true
73
+ rules_file: vex.cursorrules
74
+ activation_trigger: "@vex"
75
+
76
+ # Dependencies
77
+ dependencies:
78
+ agents: []
79
+ tools:
80
+ - mcp_cursor-ide-browser # Browser MCP para análise
81
+ optional_tools:
82
+ - mcp_vercel # Para analisar deployments Vercel
83
+ - screenshot # Para análise visual
84
+
85
+ # Capabilities
86
+ capabilities:
87
+ - Landing page analysis (5 Gatilhos de Cialdini)
88
+ - Pricing page optimization
89
+ - Conversion funnel mapping
90
+ - A/B test hypothesis generation
91
+ - Copy optimization (persuasive writing)
92
+ - Psychological triggers identification
93
+ - CTA optimization
94
+ - Social proof implementation
95
+ - Urgency & scarcity tactics
96
+ - Trust signals analysis
97
+ - Mobile conversion optimization
98
+ - User journey mapping
99
+
100
+ # Commands (Cursor-style)
101
+ commands:
102
+ - trigger: analyze-page
103
+ description: Análise completa com 5 gatilhos de Cialdini
104
+ usage: "@vex analyze-page [URL]"
105
+ example: "@vex analyze-page https://myapp.com/pricing"
106
+
107
+ - trigger: hypnotic-analysis
108
+ description: Framework AIDA Hypnotic completo
109
+ usage: "@vex hypnotic-analysis [URL]"
110
+ example: "@vex hypnotic-analysis https://myapp.com/landing"
111
+
112
+ - trigger: quick-scan
113
+ description: Top 3 quick wins em 5 minutos
114
+ usage: "@vex quick-scan [URL]"
115
+ example: "@vex quick-scan https://myapp.com"
116
+
117
+ - trigger: cta-optimize
118
+ description: Otimização de CTAs (Call-to-Action)
119
+ usage: "@vex cta-optimize [context]"
120
+
121
+ - trigger: copy-review
122
+ description: Review de copy com sugestões persuasivas
123
+ usage: "@vex copy-review [text or file]"
124
+
125
+ - trigger: ab-test-ideas
126
+ description: Geração de hipóteses para A/B tests
127
+ usage: "@vex ab-test-ideas [page-type]"
128
+
129
+ # Installation
130
+ installation:
131
+ size_mb: 0.5
132
+ install_time_minutes: 1
133
+ complexity: simple
134
+ cursor_setup: |
135
+ 1. VEX será adicionado ao seu .cursorrules
136
+ 2. Ative com @vex em qualquer arquivo
137
+ 3. Browser tools recomendado para análise de páginas
138
+
139
+ post_install: |
140
+ 🎭 VEX instalado com sucesso!
141
+
142
+ Como usar no Cursor:
143
+ @vex analyze-page https://seu-site.com
144
+ @vex quick-scan https://seu-site.com/pricing
145
+
146
+ Como usar via NEX CLI:
147
+ nex agent run vex analyze-page --url https://seu-site.com
148
+
149
+ # Pricing
150
+ pricing:
151
+ model: free
152
+ price: 0
153
+ currency: USD
154
+ license: PROPRIETARY
155
+
156
+ # Stats
157
+ stats:
158
+ installs: 450
159
+ stars: 23
160
+ rating: 4.9
161
+ last_updated: "2026-01-09"
162
+
163
+ # Links
164
+ links:
165
+ repository: https://github.com/INOSX/nex-agents
166
+ documentation: https://docs.inosx.com/nex/agents/vex
167
+ homepage: https://inosx.com/nex
168
+ issues: https://github.com/INOSX/nex-agents/issues
169
+ examples: https://github.com/INOSX/nex-agents/tree/main/examples/vex
170
+
171
+ # Metadata
172
+ metadata:
173
+ is_official: true
174
+ is_verified: true
175
+ maturity: stable
176
+ support_level: full
177
+ language: cursorrules
178
+ framework: BMAD-Cursor
179
+ works_with: [Cursor, NEX]
180
+
181
+ # Quality badges
182
+ badges:
183
+ - official
184
+ - verified
185
+ - cursor-compatible
186
+ - well-documented
187
+ - actively-maintained
188
+ - high-conversion
189
+
190
+ # Use Cases
191
+ use_cases:
192
+ - SaaS landing pages
193
+ - Pricing pages
194
+ - Sign-up flows
195
+ - Product pages
196
+ - E-commerce checkouts
197
+ - Lead generation forms
198
+ - Webinar registration pages
199
+
200
+ # Success Stories (Examples)
201
+ success_metrics:
202
+ average_conversion_increase: "30-60%"
203
+ analysis_time: "5-15 minutes"
204
+ recommendations: "3-10 actionable items"
205
+ implementation_difficulty: "Easy to Medium"
206
+
207
+ # Cialdini Framework
208
+ cialdini_triggers:
209
+ reciprocity:
210
+ description: "Dar algo primeiro para receber depois"
211
+ examples:
212
+ - Free trial
213
+ - Valuable content
214
+ - Free tools
215
+
216
+ commitment:
217
+ description: "Pequenos compromissos levam a maiores"
218
+ examples:
219
+ - Multi-step forms
220
+ - Micro-conversions
221
+ - Progress indicators
222
+
223
+ social_proof:
224
+ description: "Pessoas seguem o que outros fazem"
225
+ examples:
226
+ - Testimonials
227
+ - User counts
228
+ - Case studies
229
+
230
+ authority:
231
+ description: "Expertise e credibilidade"
232
+ examples:
233
+ - Certifications
234
+ - Press mentions
235
+ - Expert endorsements
236
+
237
+ scarcity:
238
+ description: "Urgência e disponibilidade limitada"
239
+ examples:
240
+ - Limited spots
241
+ - Time-limited offers
242
+ - Stock indicators
@@ -0,0 +1,136 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Script para publicar create-nex-app no npm
5
+ * Similar ao publish-cli.js do projeto principal
6
+ */
7
+
8
+ import { execSync } from 'child_process'
9
+ import { readFileSync, writeFileSync } from 'fs'
10
+ import { fileURLToPath } from 'url'
11
+ import { dirname, join } from 'path'
12
+
13
+ const __filename = fileURLToPath(import.meta.url)
14
+ const __dirname = dirname(__filename)
15
+
16
+ const packageJsonPath = join(__dirname, '..', 'package.json')
17
+
18
+ function log(message, color = 'reset') {
19
+ const colors = {
20
+ reset: '\x1b[0m',
21
+ red: '\x1b[31m',
22
+ green: '\x1b[32m',
23
+ yellow: '\x1b[33m',
24
+ blue: '\x1b[34m',
25
+ cyan: '\x1b[36m'
26
+ }
27
+ console.log(`${colors[color]}${message}${colors.reset}`)
28
+ }
29
+
30
+ function exec(command, options = {}) {
31
+ try {
32
+ return execSync(command, {
33
+ encoding: 'utf-8',
34
+ stdio: 'inherit',
35
+ ...options
36
+ })
37
+ } catch (error) {
38
+ log(`\n❌ Erro ao executar: ${command}`, 'red')
39
+ process.exit(1)
40
+ }
41
+ }
42
+
43
+ async function publish() {
44
+ log('\n📦 Publicando create-nex-app no npm...\n', 'blue')
45
+
46
+ // Ler package.json
47
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'))
48
+ const currentVersion = packageJson.version
49
+
50
+ log(`Versão atual: ${currentVersion}`, 'cyan')
51
+
52
+ // Verificar se está logado no npm
53
+ try {
54
+ const whoami = execSync('npm whoami', { encoding: 'utf-8' }).trim()
55
+ log(`Usuário npm: ${whoami}`, 'green')
56
+ } catch {
57
+ log('❌ Não está logado no npm. Execute: npm login', 'red')
58
+ process.exit(1)
59
+ }
60
+
61
+ // Verificar se nome está disponível (apenas primeira vez)
62
+ if (currentVersion === '0.1.0') {
63
+ log('\n🔍 Verificando se nome está disponível...', 'yellow')
64
+ try {
65
+ execSync('npm view create-nex-app', { stdio: 'ignore' })
66
+ log('⚠️ Pacote já existe no npm!', 'yellow')
67
+ log(' Considere usar outro nome ou scoped package (@inosx/create-nex-app)', 'yellow')
68
+ const readline = await import('readline')
69
+ const rl = readline.createInterface({
70
+ input: process.stdin,
71
+ output: process.stdout
72
+ })
73
+ const answer = await new Promise(resolve => {
74
+ rl.question('\nContinuar mesmo assim? (s/N): ', resolve)
75
+ })
76
+ rl.close()
77
+ if (answer.toLowerCase() !== 's') {
78
+ log('Publicação cancelada', 'yellow')
79
+ process.exit(0)
80
+ }
81
+ } catch {
82
+ log('✅ Nome disponível!', 'green')
83
+ }
84
+ }
85
+
86
+ // Executar testes
87
+ log('\n🧪 Executando testes...', 'yellow')
88
+ try {
89
+ exec('node cli/create.js --version', { stdio: 'pipe' })
90
+ log('✅ Testes passaram', 'green')
91
+ } catch {
92
+ log('⚠️ Testes falharam, mas continuando...', 'yellow')
93
+ }
94
+
95
+ // Verificar o que será publicado
96
+ log('\n📋 Verificando arquivos que serão publicados...', 'yellow')
97
+ exec('npm pack --dry-run')
98
+
99
+ // Perguntar confirmação
100
+ const readline = await import('readline')
101
+ const rl = readline.createInterface({
102
+ input: process.stdin,
103
+ output: process.stdout
104
+ })
105
+ const answer = await new Promise(resolve => {
106
+ rl.question(`\n📤 Publicar create-nex-app@${currentVersion}? (s/N): `, resolve)
107
+ })
108
+ rl.close()
109
+
110
+ if (answer.toLowerCase() !== 's') {
111
+ log('Publicação cancelada', 'yellow')
112
+ process.exit(0)
113
+ }
114
+
115
+ // Publicar
116
+ log('\n🚀 Publicando...', 'blue')
117
+
118
+ const args = process.argv.slice(2)
119
+ const otp = args.find(arg => arg.startsWith('--otp='))?.split('=')[1]
120
+ const otpEnv = process.env.NPM_OTP
121
+
122
+ if (otp || otpEnv) {
123
+ exec(`npm publish --otp=${otp || otpEnv}`)
124
+ } else {
125
+ exec('npm publish')
126
+ }
127
+
128
+ log(`\n✅ create-nex-app@${currentVersion} publicado com sucesso!`, 'green')
129
+ log(`\n🔗 https://www.npmjs.com/package/create-nex-app`, 'cyan')
130
+ log(`\n🧪 Teste com: npx create-nex-app`, 'cyan')
131
+ }
132
+
133
+ publish().catch(error => {
134
+ log(`\n❌ Erro: ${error.message}`, 'red')
135
+ process.exit(1)
136
+ })
package/ui/assets/app.js CHANGED
@@ -180,7 +180,12 @@ nex agent list --all
180
180
  nex agent install <agent-id>
181
181
 
182
182
  # Usar no Cursor:
183
- @<agent-id> <comando>`
183
+ @nex/bmad/agents/<agent-id>`
184
+
185
+ // Adicionar evento ao botão de fechar
186
+ document.getElementById('close-btn').addEventListener('click', () => {
187
+ window.close()
188
+ })
184
189
  }
185
190
 
186
191
  // Mostrar erro
package/ui/index.html CHANGED
@@ -55,6 +55,9 @@
55
55
  <h3>Próximos passos:</h3>
56
56
  <pre id="next-steps-commands"></pre>
57
57
  </div>
58
+ <div class="actions">
59
+ <button type="button" id="close-btn" class="btn btn-primary">Fechar</button>
60
+ </div>
58
61
  </div>
59
62
  </div>
60
63