drm-core 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.
Files changed (45) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +82 -0
  3. package/bin/drm-core.js +10 -0
  4. package/cli/index.js +398 -0
  5. package/package.json +53 -0
  6. package/scaffold/.claude/commands/DRM/agents/afrodite.md +3 -0
  7. package/scaffold/.claude/commands/DRM/agents/apolo.md +3 -0
  8. package/scaffold/.claude/commands/DRM/agents/atena.md +3 -0
  9. package/scaffold/.claude/commands/DRM/agents/cronos.md +3 -0
  10. package/scaffold/.claude/commands/DRM/agents/hefesto.md +3 -0
  11. package/scaffold/.claude/commands/DRM/agents/hermes.md +3 -0
  12. package/scaffold/.claude/commands/DRM/agents/poseidon.md +3 -0
  13. package/scaffold/.claude/commands/DRM/agents/temis.md +3 -0
  14. package/scaffold/.claude/commands/DRM/agents/zeus.md +3 -0
  15. package/scaffold/.claude/rules/drm-agent-authority.md +98 -0
  16. package/scaffold/.claude/rules/drm-agent-handoff.md +61 -0
  17. package/scaffold/.claude/rules/drm-workflow-execution.md +60 -0
  18. package/scaffold/.drm/config.yaml +16 -0
  19. package/scaffold/.drm-core/agents/afrodite.md +115 -0
  20. package/scaffold/.drm-core/agents/apolo.md +123 -0
  21. package/scaffold/.drm-core/agents/atena.md +92 -0
  22. package/scaffold/.drm-core/agents/cronos.md +109 -0
  23. package/scaffold/.drm-core/agents/hefesto.md +103 -0
  24. package/scaffold/.drm-core/agents/hermes.md +105 -0
  25. package/scaffold/.drm-core/agents/poseidon.md +137 -0
  26. package/scaffold/.drm-core/agents/temis.md +139 -0
  27. package/scaffold/.drm-core/agents/zeus.md +108 -0
  28. package/scaffold/.drm-core/constitution.md +171 -0
  29. package/scaffold/.drm-core/rules/compliance-rules.md +153 -0
  30. package/scaffold/.drm-core/rules/copy-standards.md +154 -0
  31. package/scaffold/.drm-core/rules/funil-patterns.md +280 -0
  32. package/scaffold/.drm-core/rules/metricas-referencia.md +132 -0
  33. package/scaffold/docs/analises/.gitkeep +0 -0
  34. package/scaffold/docs/campanhas/.gitkeep +0 -0
  35. package/scaffold/docs/copy/ads/.gitkeep +0 -0
  36. package/scaffold/docs/copy/emails/.gitkeep +0 -0
  37. package/scaffold/docs/copy/microleads/.gitkeep +0 -0
  38. package/scaffold/docs/copy/paginas/.gitkeep +0 -0
  39. package/scaffold/docs/copy/vsls/.gitkeep +0 -0
  40. package/scaffold/docs/copy/whatsapp/.gitkeep +0 -0
  41. package/scaffold/docs/criativos/.gitkeep +0 -0
  42. package/scaffold/docs/estrategias/.gitkeep +0 -0
  43. package/scaffold/docs/funis/backend/.gitkeep +0 -0
  44. package/scaffold/docs/funis/frontend/.gitkeep +0 -0
  45. package/scaffold/docs/funis/onboarding/.gitkeep +0 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 andrexaviertrafego-ai
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,82 @@
1
+ # DRM — Direct Response Marketing Framework
2
+
3
+ Framework de orquestracao de agentes de IA especializados em marketing de resposta direta para o mercado brasileiro.
4
+
5
+ ## Instalacao
6
+
7
+ ```bash
8
+ # Novo projeto
9
+ npx drm-core init meu-projeto
10
+
11
+ # Projeto existente
12
+ cd seu-projeto
13
+ npx drm-core install
14
+
15
+ # Diagnostico
16
+ npx drm-core doctor
17
+ ```
18
+
19
+ ## Agentes
20
+
21
+ | Agente | Nome | Papel | Referências |
22
+ |--------|------|-------|-------------|
23
+ | `@atena` | Atena | Estrategista / Master | Dan Kennedy, Jay Abraham, Ryan Deiss |
24
+ | `@apolo` | Apolo | Copywriter | Stefan Georgi, Eugene Schwartz, Gary Halbert |
25
+ | `@hermes` | Hermes | Media Buyer | Depesh Mandalia, Manny Barbas, Molly Pittman |
26
+ | `@zeus` | Zeus | Creative Director | David Ogilvy, Luke Sullivan, Harmon Brothers |
27
+ | `@cronos` | Cronos | Analista de Dados | Alex Hormozi, Drew Sanocki, Andrew Chen |
28
+ | `@hefesto` | Hefesto | Editor de Video | Agora Financial, MindValley, Icaro de Carvalho |
29
+ | `@afrodite` | Afrodite | Designer | Russell Brunson, Joanna Wiebe, Peep Laja |
30
+ | `@temis` | Temis | Compliance | Meta/Google/TikTok Policies, CONAR, LGPD |
31
+ | `@poseidon` | Poseidon | Funnel Architect | Russell Brunson, Todd Brown, Leandro Ladeira |
32
+
33
+ ## Plataformas
34
+
35
+ - **Claude Code** — Slash commands (`/DRM:agents:atena`) + rules + settings.json
36
+ - **Gemini CLI** — TOML commands + rules
37
+ - **Antigravity** — Rules
38
+
39
+ ## Constitution
40
+
41
+ | Artigo | Principio | Severidade |
42
+ |--------|-----------|------------|
43
+ | I | Conversao First | NON-NEGOTIABLE |
44
+ | II | Agent Authority | NON-NEGOTIABLE |
45
+ | III | Data-Driven | MUST |
46
+ | IV | No Invention | MUST |
47
+ | V | Compliance First | MUST |
48
+ | VI | Copy is King | SHOULD |
49
+
50
+ ## Modelo de Negocio
51
+
52
+ ```
53
+ Frontend (VSL) Backend (WhatsApp)
54
+ Ad -> Microlead/VSL API WhatsApp
55
+ -> LP de Vendas compra -> Msgs automaticas
56
+ -> Checkout -----------> -> Oferta high-ticket
57
+ -> Order Bump -> Onboarding
58
+ -> Upsell -> Upsell backend
59
+ -> Downsell
60
+ ```
61
+
62
+ ## Uso
63
+
64
+ ```bash
65
+ # Abrir Claude Code no projeto
66
+ claude
67
+
68
+ # Ativar agente
69
+ @atena # Estrategista
70
+ @apolo # Copywriter
71
+ @hermes # Media Buyer
72
+
73
+ # Comandos de agente
74
+ *briefing # Criar briefing estrategico
75
+ *vsl-full # Escrever VSL completa
76
+ *campanha # Montar campanha
77
+ *funil-vsl # Arquitetar funil
78
+ ```
79
+
80
+ ## Licenca
81
+
82
+ MIT
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+
3
+ 'use strict';
4
+
5
+ const { run } = require('../cli/index');
6
+
7
+ run().catch((error) => {
8
+ console.error(error.message);
9
+ process.exit(1);
10
+ });
package/cli/index.js ADDED
@@ -0,0 +1,398 @@
1
+ /**
2
+ * DRM CLI — Direct Response Marketing Framework
3
+ *
4
+ * Commands:
5
+ * init <name> Create new DRM project
6
+ * install Install DRM in existing project
7
+ * doctor Diagnose DRM installation
8
+ */
9
+
10
+ const { Command } = require('commander');
11
+ const path = require('path');
12
+ const fs = require('fs-extra');
13
+ const chalk = require('chalk');
14
+
15
+ const SCAFFOLD_DIR = path.join(__dirname, '..', 'scaffold');
16
+ const VERSION = require('../package.json').version;
17
+
18
+ function createProgram() {
19
+ const program = new Command();
20
+
21
+ program
22
+ .name('drm-core')
23
+ .version(VERSION)
24
+ .description('DRM — Direct Response Marketing: Framework de orquestracao de agentes de IA');
25
+
26
+ // === init ===
27
+ program
28
+ .command('init <name>')
29
+ .description('Criar novo projeto DRM')
30
+ .action(async (name) => {
31
+ const targetDir = path.resolve(process.cwd(), name);
32
+
33
+ if (fs.existsSync(targetDir)) {
34
+ console.error(chalk.red(`Erro: Diretorio "${name}" ja existe.`));
35
+ process.exit(1);
36
+ }
37
+
38
+ console.log(chalk.bold.cyan('\n⚔️ DRM — Direct Response Marketing Framework\n'));
39
+ console.log(chalk.gray(`Criando projeto "${name}"...\n`));
40
+
41
+ // Create directory
42
+ fs.mkdirSync(targetDir, { recursive: true });
43
+
44
+ // Copy scaffold
45
+ await copyScaffold(targetDir);
46
+
47
+ // Create project package.json
48
+ const projectPkg = {
49
+ name: name,
50
+ version: '1.0.0',
51
+ description: '',
52
+ private: true,
53
+ scripts: {},
54
+ keywords: [],
55
+ license: 'UNLICENSED',
56
+ type: 'commonjs'
57
+ };
58
+ fs.writeJsonSync(path.join(targetDir, 'package.json'), projectPkg, { spaces: 2 });
59
+
60
+ // Init git
61
+ try {
62
+ const { execSync } = require('child_process');
63
+ execSync('git init', { cwd: targetDir, stdio: 'ignore' });
64
+ console.log(chalk.green(' ✓ Git inicializado'));
65
+ } catch {
66
+ console.log(chalk.yellow(' ⚠ Git nao encontrado — inicialize manualmente'));
67
+ }
68
+
69
+ // Create .claude/CLAUDE.md and settings.json
70
+ createClaudeMd(targetDir, name);
71
+ createSettingsJson(targetDir);
72
+
73
+ console.log(chalk.bold.green('\n✓ Projeto DRM criado com sucesso!\n'));
74
+ printNextSteps(name);
75
+ });
76
+
77
+ // === install ===
78
+ program
79
+ .command('install')
80
+ .description('Instalar DRM em projeto existente')
81
+ .action(async () => {
82
+ const targetDir = process.cwd();
83
+
84
+ console.log(chalk.bold.cyan('\n⚔️ DRM — Instalando em projeto existente\n'));
85
+
86
+ // Copy scaffold (skip existing files)
87
+ await copyScaffold(targetDir, { overwrite: false });
88
+
89
+ // Merge CLAUDE.md if exists
90
+ const claudeMdPath = path.join(targetDir, '.claude', 'CLAUDE.md');
91
+ if (fs.existsSync(claudeMdPath)) {
92
+ const existing = fs.readFileSync(claudeMdPath, 'utf8');
93
+ if (!existing.includes('DRM — Direct Response Marketing')) {
94
+ const drmSection = getDrmClaudeMdSection();
95
+ fs.appendFileSync(claudeMdPath, '\n\n' + drmSection);
96
+ console.log(chalk.green(' ✓ CLAUDE.md atualizado (secao DRM adicionada)'));
97
+ } else {
98
+ console.log(chalk.gray(' - CLAUDE.md ja contem secao DRM'));
99
+ }
100
+ } else {
101
+ fs.ensureDirSync(path.join(targetDir, '.claude'));
102
+ createClaudeMd(targetDir, path.basename(targetDir));
103
+ }
104
+
105
+ // Merge settings.json if exists
106
+ const settingsPath = path.join(targetDir, '.claude', 'settings.json');
107
+ if (fs.existsSync(settingsPath)) {
108
+ mergeSettingsJson(settingsPath);
109
+ console.log(chalk.green(' ✓ settings.json atualizado (deny/allow DRM adicionados)'));
110
+ } else {
111
+ createSettingsJson(targetDir);
112
+ }
113
+
114
+ console.log(chalk.bold.green('\n✓ DRM instalado com sucesso!\n'));
115
+ printAgents();
116
+ });
117
+
118
+ // === doctor ===
119
+ program
120
+ .command('doctor')
121
+ .description('Diagnosticar instalacao DRM')
122
+ .action(() => {
123
+ const targetDir = process.cwd();
124
+
125
+ console.log(chalk.bold.cyan('\n⚔️ DRM Doctor — Diagnostico\n'));
126
+
127
+ const checks = [
128
+ { name: '.drm-core/constitution.md', path: '.drm-core/constitution.md' },
129
+ { name: '.drm-core/agents/ (9 agentes)', path: '.drm-core/agents/atena.md' },
130
+ { name: '.drm-core/rules/ (4 rules)', path: '.drm-core/rules/copy-standards.md' },
131
+ { name: '.drm/config.yaml', path: '.drm/config.yaml' },
132
+ { name: '.claude/CLAUDE.md', path: '.claude/CLAUDE.md' },
133
+ { name: '.claude/settings.json', path: '.claude/settings.json' },
134
+ { name: '.claude/commands/DRM/', path: '.claude/commands/DRM/agents/atena.md' },
135
+ { name: '.claude/rules/drm-*', path: '.claude/rules/drm-agent-authority.md' },
136
+ { name: '.gemini/commands/', path: '.gemini/commands/drm-atena.toml', optional: true },
137
+ { name: '.antigravity/rules/', path: '.antigravity/rules/agents/atena.md', optional: true },
138
+ ];
139
+
140
+ let passed = 0;
141
+ let failed = 0;
142
+ let optional = 0;
143
+
144
+ checks.forEach(({ name, path: checkPath, optional: isOptional }) => {
145
+ const fullPath = path.join(targetDir, checkPath);
146
+ if (fs.existsSync(fullPath)) {
147
+ console.log(chalk.green(` ✓ ${name}`));
148
+ passed++;
149
+ } else if (isOptional) {
150
+ console.log(chalk.yellow(` ○ ${name} (opcional)`));
151
+ optional++;
152
+ } else {
153
+ console.log(chalk.red(` ✗ ${name}`));
154
+ failed++;
155
+ }
156
+ });
157
+
158
+ // Count agents
159
+ const agentsDir = path.join(targetDir, '.drm-core', 'agents');
160
+ if (fs.existsSync(agentsDir)) {
161
+ const agents = fs.readdirSync(agentsDir).filter(f => f.endsWith('.md'));
162
+ console.log(chalk.gray(`\n Agentes: ${agents.map(a => a.replace('.md', '')).join(', ')}`));
163
+ }
164
+
165
+ console.log(chalk.bold(`\n Resultado: ${passed} ok, ${failed} falha(s), ${optional} opcional(is)\n`));
166
+
167
+ if (failed > 0) {
168
+ console.log(chalk.yellow(' Execute "npx drm-core install" para corrigir.\n'));
169
+ process.exit(1);
170
+ } else {
171
+ console.log(chalk.green(' Framework DRM operacional. Use @atena para comecar.\n'));
172
+ }
173
+ });
174
+
175
+ return program;
176
+ }
177
+
178
+ // === Helpers ===
179
+
180
+ async function copyScaffold(targetDir, options = { overwrite: true }) {
181
+ const items = [
182
+ { src: '.drm-core', label: '.drm-core/ (framework)' },
183
+ { src: '.drm', label: '.drm/ (runtime)' },
184
+ { src: '.claude/commands/DRM', label: '.claude/commands/DRM/ (slash commands)' },
185
+ { src: '.claude/rules', label: '.claude/rules/ (governance rules)', merge: true },
186
+ { src: '.gemini', label: '.gemini/ (Gemini CLI)' },
187
+ { src: '.antigravity', label: '.antigravity/ (Antigravity)' },
188
+ { src: 'docs', label: 'docs/ (entregaveis)', merge: true },
189
+ ];
190
+
191
+ for (const item of items) {
192
+ const srcPath = path.join(SCAFFOLD_DIR, item.src);
193
+ const destPath = path.join(targetDir, item.src);
194
+
195
+ if (!fs.existsSync(srcPath)) continue;
196
+
197
+ if (item.merge || options.overwrite) {
198
+ fs.copySync(srcPath, destPath, { overwrite: options.overwrite });
199
+ } else if (!fs.existsSync(destPath)) {
200
+ fs.copySync(srcPath, destPath);
201
+ }
202
+
203
+ console.log(chalk.green(` ✓ ${item.label}`));
204
+ }
205
+ }
206
+
207
+ function getDrmClaudeMdSection() {
208
+ return `---
209
+
210
+ # DRM — Direct Response Marketing Framework
211
+
212
+ Voce tambem trabalha com o DRM, um framework de orquestracao de agentes
213
+ especializados em marketing de resposta direta para o mercado brasileiro.
214
+
215
+ ## Constitution DRM
216
+
217
+ | Artigo | Principio | Severidade |
218
+ |--------|-----------|------------|
219
+ | I | Conversao First | NON-NEGOTIABLE |
220
+ | II | Agent Authority | NON-NEGOTIABLE |
221
+ | III | Data-Driven | MUST |
222
+ | IV | No Invention | MUST |
223
+ | V | Compliance First | MUST |
224
+ | VI | Copy is King | SHOULD |
225
+
226
+ **Documento completo:** \`.drm-core/constitution.md\`
227
+
228
+ ## Sistema de Agentes DRM
229
+
230
+ ### Ativacao
231
+ Use \`@nome\` ou \`/DRM:agents:nome\`:
232
+
233
+ | Agente | Nome | Papel |
234
+ |--------|------|-------|
235
+ | \`@atena\` | Atena | Estrategista / Master (360) |
236
+ | \`@apolo\` | Apolo | Copywriter |
237
+ | \`@hermes\` | Hermes | Media Buyer |
238
+ | \`@zeus\` | Zeus | Creative Director |
239
+ | \`@cronos\` | Cronos | Analista de Dados |
240
+ | \`@hefesto\` | Hefesto | Editor de Video |
241
+ | \`@afrodite\` | Afrodite | Designer |
242
+ | \`@temis\` | Temis | Compliance |
243
+ | \`@poseidon\` | Poseidon | Funnel Architect |
244
+
245
+ ### Comandos DRM
246
+ Use prefixo \`*\` para comandos de agente.
247
+
248
+ ## Framework Structure DRM
249
+
250
+ | Camada | Mutabilidade | Path |
251
+ |--------|-------------|------|
252
+ | **L1** Core | NEVER | \`.drm-core/constitution.md\`, \`.drm-core/agents/\` |
253
+ | **L2** Templates | NEVER | \`.drm-core/tasks/\`, \`.drm-core/templates/\`, \`.drm-core/workflows/\`, \`.drm-core/checklists/\` |
254
+ | **L3** Config | Mutable | \`.drm/\`, \`.drm-core/data/\` |
255
+ | **L4** Runtime | ALWAYS | \`docs/\` |
256
+
257
+ ## Modelo de Negocio DRM
258
+
259
+ Frontend (VSL) -> Checkout -> Order Bump -> Upsell -> Downsell
260
+ Backend (WhatsApp API) -> Nutricao -> Oferta High-Ticket -> Onboarding
261
+
262
+ ---
263
+ *DRM Framework v1.0*`;
264
+ }
265
+
266
+ function createClaudeMd(targetDir, projectName) {
267
+ const claudeDir = path.join(targetDir, '.claude');
268
+ fs.ensureDirSync(claudeDir);
269
+
270
+ const content = `# ${projectName}
271
+
272
+ ${getDrmClaudeMdSection()}
273
+ `;
274
+
275
+ fs.writeFileSync(path.join(claudeDir, 'CLAUDE.md'), content);
276
+ console.log(chalk.green(' ✓ .claude/CLAUDE.md'));
277
+ }
278
+
279
+ function createSettingsJson(targetDir) {
280
+ const claudeDir = path.join(targetDir, '.claude');
281
+ fs.ensureDirSync(claudeDir);
282
+
283
+ const settings = {
284
+ language: 'portuguese',
285
+ permissions: {
286
+ deny: [
287
+ 'Edit(.drm-core/constitution.md)',
288
+ 'Write(.drm-core/constitution.md)',
289
+ 'Edit(.drm-core/agents/**)',
290
+ 'Write(.drm-core/agents/**)',
291
+ 'Edit(.drm-core/tasks/**)',
292
+ 'Write(.drm-core/tasks/**)',
293
+ 'Edit(.drm-core/templates/**)',
294
+ 'Write(.drm-core/templates/**)',
295
+ 'Edit(.drm-core/workflows/**)',
296
+ 'Write(.drm-core/workflows/**)',
297
+ 'Edit(.drm-core/checklists/**)',
298
+ 'Write(.drm-core/checklists/**)',
299
+ 'Edit(.drm-core/rules/**)',
300
+ 'Write(.drm-core/rules/**)'
301
+ ],
302
+ allow: [
303
+ 'Read(.drm-core/**)',
304
+ 'Edit(.drm-core/data/**)',
305
+ 'Write(.drm-core/data/**)',
306
+ 'Edit(.drm/**)',
307
+ 'Write(.drm/**)',
308
+ 'Edit(docs/**)',
309
+ 'Write(docs/**)'
310
+ ]
311
+ }
312
+ };
313
+
314
+ fs.writeJsonSync(path.join(claudeDir, 'settings.json'), settings, { spaces: 2 });
315
+ console.log(chalk.green(' ✓ .claude/settings.json'));
316
+ }
317
+
318
+ function mergeSettingsJson(settingsPath) {
319
+ const settings = fs.readJsonSync(settingsPath);
320
+
321
+ if (!settings.permissions) settings.permissions = {};
322
+ if (!settings.permissions.deny) settings.permissions.deny = [];
323
+ if (!settings.permissions.allow) settings.permissions.allow = [];
324
+
325
+ const drmDenyRules = [
326
+ 'Edit(.drm-core/constitution.md)',
327
+ 'Write(.drm-core/constitution.md)',
328
+ 'Edit(.drm-core/agents/**)',
329
+ 'Write(.drm-core/agents/**)',
330
+ 'Edit(.drm-core/tasks/**)',
331
+ 'Write(.drm-core/tasks/**)',
332
+ 'Edit(.drm-core/templates/**)',
333
+ 'Write(.drm-core/templates/**)',
334
+ 'Edit(.drm-core/workflows/**)',
335
+ 'Write(.drm-core/workflows/**)',
336
+ 'Edit(.drm-core/checklists/**)',
337
+ 'Write(.drm-core/checklists/**)',
338
+ 'Edit(.drm-core/rules/**)',
339
+ 'Write(.drm-core/rules/**)'
340
+ ];
341
+
342
+ const drmAllowRules = [
343
+ 'Read(.drm-core/**)',
344
+ 'Edit(.drm-core/data/**)',
345
+ 'Write(.drm-core/data/**)',
346
+ 'Edit(.drm/**)',
347
+ 'Write(.drm/**)'
348
+ ];
349
+
350
+ drmDenyRules.forEach(rule => {
351
+ if (!settings.permissions.deny.includes(rule)) {
352
+ settings.permissions.deny.push(rule);
353
+ }
354
+ });
355
+
356
+ drmAllowRules.forEach(rule => {
357
+ if (!settings.permissions.allow.includes(rule)) {
358
+ settings.permissions.allow.push(rule);
359
+ }
360
+ });
361
+
362
+ fs.writeJsonSync(settingsPath, settings, { spaces: 2 });
363
+ }
364
+
365
+ function printNextSteps(name) {
366
+ console.log(chalk.bold('Proximos passos:\n'));
367
+ console.log(chalk.white(` cd ${name}`));
368
+ console.log(chalk.white(' claude # Abrir Claude Code'));
369
+ console.log(chalk.white(' @atena # Ativar estrategista'));
370
+ console.log(chalk.white(' /DRM:agents:apolo # Ativar copywriter'));
371
+ console.log(chalk.gray('\n Ou use Gemini CLI / Antigravity com os mesmos agentes.\n'));
372
+ }
373
+
374
+ function printAgents() {
375
+ console.log(chalk.bold('Agentes disponiveis:\n'));
376
+ const agents = [
377
+ ['@atena', 'Estrategista / Master'],
378
+ ['@apolo', 'Copywriter'],
379
+ ['@hermes', 'Media Buyer'],
380
+ ['@zeus', 'Creative Director'],
381
+ ['@cronos', 'Analista de Dados'],
382
+ ['@hefesto', 'Editor de Video'],
383
+ ['@afrodite', 'Designer'],
384
+ ['@temis', 'Compliance'],
385
+ ['@poseidon', 'Funnel Architect'],
386
+ ];
387
+ agents.forEach(([name, role]) => {
388
+ console.log(chalk.white(` ${chalk.cyan(name.padEnd(12))} ${role}`));
389
+ });
390
+ console.log('');
391
+ }
392
+
393
+ async function run(args = process.argv) {
394
+ const program = createProgram();
395
+ await program.parseAsync(args);
396
+ }
397
+
398
+ module.exports = { createProgram, run };
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "drm-core",
3
+ "version": "1.0.0",
4
+ "description": "DRM — Direct Response Marketing: Framework de orquestracao de agentes de IA para marketing de resposta direta",
5
+ "main": "cli/index.js",
6
+ "bin": {
7
+ "drm-core": "bin/drm-core.js"
8
+ },
9
+ "files": [
10
+ "bin/",
11
+ "cli/",
12
+ "scaffold/",
13
+ "README.md",
14
+ "LICENSE"
15
+ ],
16
+ "scripts": {
17
+ "test": "echo \"No tests yet\" && exit 0"
18
+ },
19
+ "dependencies": {
20
+ "chalk": "^4.1.2",
21
+ "commander": "^12.1.0",
22
+ "fs-extra": "^11.3.0"
23
+ },
24
+ "keywords": [
25
+ "drm",
26
+ "direct-response-marketing",
27
+ "marketing",
28
+ "copywriting",
29
+ "vsl",
30
+ "funnel",
31
+ "media-buying",
32
+ "ai-orchestration",
33
+ "claude-code",
34
+ "gemini-cli"
35
+ ],
36
+ "author": "andrexaviertrafego-ai",
37
+ "license": "MIT",
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "git+https://github.com/andrexaviertrafego-ai/drm-core.git"
41
+ },
42
+ "bugs": {
43
+ "url": "https://github.com/andrexaviertrafego-ai/drm-core/issues"
44
+ },
45
+ "homepage": "https://github.com/andrexaviertrafego-ai/drm-core#readme",
46
+ "engines": {
47
+ "node": ">=18.0.0"
48
+ },
49
+ "publishConfig": {
50
+ "access": "public",
51
+ "registry": "https://registry.npmjs.org/"
52
+ }
53
+ }
@@ -0,0 +1,3 @@
1
+ Leia o arquivo `.drm-core/agents/afrodite.md` completo e siga as instrucoes
2
+ de ativacao contidas nele. Adote a persona, exiba o greeting e aguarde
3
+ o input do usuario.
@@ -0,0 +1,3 @@
1
+ Leia o arquivo `.drm-core/agents/apolo.md` completo e siga as instrucoes
2
+ de ativacao contidas nele. Adote a persona, exiba o greeting e aguarde
3
+ o input do usuario.
@@ -0,0 +1,3 @@
1
+ Leia o arquivo `.drm-core/agents/atena.md` completo e siga as instrucoes
2
+ de ativacao contidas nele. Adote a persona, exiba o greeting e aguarde
3
+ o input do usuario.
@@ -0,0 +1,3 @@
1
+ Leia o arquivo `.drm-core/agents/cronos.md` completo e siga as instrucoes
2
+ de ativacao contidas nele. Adote a persona, exiba o greeting e aguarde
3
+ o input do usuario.
@@ -0,0 +1,3 @@
1
+ Leia o arquivo `.drm-core/agents/hefesto.md` completo e siga as instrucoes
2
+ de ativacao contidas nele. Adote a persona, exiba o greeting e aguarde
3
+ o input do usuario.
@@ -0,0 +1,3 @@
1
+ Leia o arquivo `.drm-core/agents/hermes.md` completo e siga as instrucoes
2
+ de ativacao contidas nele. Adote a persona, exiba o greeting e aguarde
3
+ o input do usuario.
@@ -0,0 +1,3 @@
1
+ Leia o arquivo `.drm-core/agents/poseidon.md` completo e siga as instrucoes
2
+ de ativacao contidas nele. Adote a persona, exiba o greeting e aguarde
3
+ o input do usuario.
@@ -0,0 +1,3 @@
1
+ Leia o arquivo `.drm-core/agents/temis.md` completo e siga as instrucoes
2
+ de ativacao contidas nele. Adote a persona, exiba o greeting e aguarde
3
+ o input do usuario.
@@ -0,0 +1,3 @@
1
+ Leia o arquivo `.drm-core/agents/zeus.md` completo e siga as instrucoes
2
+ de ativacao contidas nele. Adote a persona, exiba o greeting e aguarde
3
+ o input do usuario.