specifica-br 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.
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createDirectories = createDirectories;
37
+ exports.copyTemplates = copyTemplates;
38
+ const fs = __importStar(require("fs-extra"));
39
+ const path = __importStar(require("path"));
40
+ function createDirectories() {
41
+ const directoriesToCreate = [
42
+ path.join(process.cwd(), '.opencode', 'commands'),
43
+ path.join(process.cwd(), 'specs', 'templates')
44
+ ];
45
+ directoriesToCreate.forEach((dir) => {
46
+ try {
47
+ fs.ensureDirSync(dir);
48
+ console.log(`Diretório criado: ${dir}`);
49
+ }
50
+ catch (error) {
51
+ if (error instanceof Error) {
52
+ throw new Error(`Erro ao criar diretório ${dir}: ${error.message}`);
53
+ }
54
+ throw new Error(`Erro ao criar diretório ${dir}`);
55
+ }
56
+ });
57
+ }
58
+ function copyTemplates() {
59
+ const distRoot = path.resolve(__dirname, '..');
60
+ const boilerplateDir = path.join(distRoot, 'boilerplate');
61
+ const templateFiles = [
62
+ {
63
+ source: path.join(boilerplateDir, 'opencode-commands', 'gerar-prd.md'),
64
+ dest: path.join(process.cwd(), '.opencode', 'commands', 'gerar-prd.md')
65
+ },
66
+ {
67
+ source: path.join(boilerplateDir, 'opencode-commands', 'gerar-techspec.md'),
68
+ dest: path.join(process.cwd(), '.opencode', 'commands', 'gerar-techspec.md')
69
+ },
70
+ {
71
+ source: path.join(boilerplateDir, 'opencode-commands', 'gerar-tasks.md'),
72
+ dest: path.join(process.cwd(), '.opencode', 'commands', 'gerar-tasks.md')
73
+ },
74
+ {
75
+ source: path.join(boilerplateDir, 'opencode-commands', 'executar-task.md'),
76
+ dest: path.join(process.cwd(), '.opencode', 'commands', 'executar-task.md')
77
+ },
78
+ {
79
+ source: path.join(boilerplateDir, 'specs-templates', 'prd-template.md'),
80
+ dest: path.join(process.cwd(), 'specs', 'templates', 'prd-template.md')
81
+ },
82
+ {
83
+ source: path.join(boilerplateDir, 'specs-templates', 'techspec-template.md'),
84
+ dest: path.join(process.cwd(), 'specs', 'templates', 'techspec-template.md')
85
+ },
86
+ {
87
+ source: path.join(boilerplateDir, 'specs-templates', 'task-template.md'),
88
+ dest: path.join(process.cwd(), 'specs', 'templates', 'task-template.md')
89
+ },
90
+ {
91
+ source: path.join(boilerplateDir, 'specs-templates', 'tasks-template.md'),
92
+ dest: path.join(process.cwd(), 'specs', 'templates', 'tasks-template.md')
93
+ }
94
+ ];
95
+ templateFiles.forEach(({ source, dest }) => {
96
+ try {
97
+ fs.copySync(source, dest, { overwrite: true });
98
+ console.log(`Arquivo copiado: ${path.basename(dest)}`);
99
+ }
100
+ catch (error) {
101
+ if (error instanceof Error) {
102
+ throw new Error(`Erro ao copiar arquivo ${source}: ${error.message}`);
103
+ }
104
+ throw new Error(`Erro ao copiar arquivo ${source}`);
105
+ }
106
+ });
107
+ }
@@ -0,0 +1,4 @@
1
+ export declare function showSuccessMessage(): void;
2
+ export declare function showMissionMessage(): void;
3
+ export declare function showErrorMessage(message: string): void;
4
+ export declare function showInfoMessage(message: string): void;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.showSuccessMessage = showSuccessMessage;
7
+ exports.showMissionMessage = showMissionMessage;
8
+ exports.showErrorMessage = showErrorMessage;
9
+ exports.showInfoMessage = showInfoMessage;
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ function showSuccessMessage() {
12
+ console.log('');
13
+ console.log(chalk_1.default.green.bold('✓ Estrutura SDD criada com sucesso!'));
14
+ console.log('');
15
+ console.log(chalk_1.default.gray('Diretórios criados:'));
16
+ console.log(chalk_1.default.gray(' - .opencode/commands'));
17
+ console.log(chalk_1.default.gray(' - specs/templates'));
18
+ console.log('');
19
+ console.log(chalk_1.default.gray('Arquivos de comandos copiados:'));
20
+ console.log(chalk_1.default.gray(' - gerar-prd.md'));
21
+ console.log(chalk_1.default.gray(' - gerar-techspec.md'));
22
+ console.log(chalk_1.default.gray(' - gerar-tasks.md'));
23
+ console.log(chalk_1.default.gray(' - executar-task.md'));
24
+ console.log('');
25
+ console.log(chalk_1.default.gray('Arquivos de templates copiados:'));
26
+ console.log(chalk_1.default.gray(' - prd-template.md'));
27
+ console.log(chalk_1.default.gray(' - techspec-template.md'));
28
+ console.log(chalk_1.default.gray(' - task-template.md'));
29
+ console.log(chalk_1.default.gray(' - tasks-template.md'));
30
+ console.log('');
31
+ }
32
+ function showMissionMessage() {
33
+ console.log('');
34
+ console.log(chalk_1.default.cyan.bold('Bem-vindo ao Specifica-BR!'));
35
+ console.log('');
36
+ console.log(chalk_1.default.yellow('O que é Spec Driven Development (SDD)?'));
37
+ console.log('');
38
+ console.log(chalk_1.default.white('SDD é uma metodologia de desenvolvimento que prioriza'));
39
+ console.log(chalk_1.default.white('a documentação e especificação antes da escrita de código.'));
40
+ console.log('');
41
+ console.log(chalk_1.default.yellow('Benefícios do SDD:'));
42
+ console.log('');
43
+ console.log(chalk_1.default.white(' • Documentação antes do código'));
44
+ console.log(chalk_1.default.white(' • Redução de retrabalho'));
45
+ console.log(chalk_1.default.white(' • Comunicação alinhada entre times'));
46
+ console.log(chalk_1.default.white(' • Maior qualidade e manutenibilidade'));
47
+ console.log('');
48
+ console.log(chalk_1.default.yellow('Próximos passos:'));
49
+ console.log('');
50
+ console.log(chalk_1.default.white(' 1. Execute: specifica help --completo'));
51
+ console.log(chalk_1.default.white(' 2. Crie seu PRD usando o template'));
52
+ console.log(chalk_1.default.white(' 3. Gere sua Tech Spec baseada no PRD'));
53
+ console.log(chalk_1.default.white(' 4. Decomponha em tarefas executáveis'));
54
+ console.log('');
55
+ console.log(chalk_1.default.cyan.bold('Comece agora com: specifica help'));
56
+ console.log('');
57
+ }
58
+ function showErrorMessage(message) {
59
+ console.error('');
60
+ console.error(chalk_1.default.red.bold('✗ Erro:'));
61
+ console.error(chalk_1.default.red(message));
62
+ console.error('');
63
+ }
64
+ function showInfoMessage(message) {
65
+ console.log('');
66
+ console.log(chalk_1.default.blue('ℹ ' + message));
67
+ console.log('');
68
+ }
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "specifica-br",
3
+ "version": "1.0.0",
4
+ "description": "Ferramenta de automação para desenvolvimento guiado por especificações (Spec Driven Development - SDD) com IA. Otimizado para o ecossistema brasileiro.",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "specifica-br": "./dist/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc && npm run copy:assets",
11
+ "copy:assets": "npx copyfiles -u 2 \"src/assets/**/*\" dist",
12
+ "start": "node dist/index.js",
13
+ "dev": "tsc && npm run copy:assets && node dist/index.js"
14
+ },
15
+ "keywords": [
16
+ "spec driven development",
17
+ "SSD",
18
+ "spec",
19
+ "especificar",
20
+ "ai",
21
+ "ia",
22
+ "spec-driven-development",
23
+ "automation",
24
+ "opencode",
25
+ "brazil",
26
+ "brasil"
27
+ ],
28
+ "author": "Éverton França <everfranca@gmail.com> (https://github.com/everfranca)",
29
+ "license": "MIT",
30
+ "files": [
31
+ "dist/**/*",
32
+ "package.json",
33
+ "README.md",
34
+ "LICENSE"
35
+ ],
36
+ "dependencies": {
37
+ "@types/prompts": "^2.4.9",
38
+ "chalk": "^4.1.2",
39
+ "commander": "^14.0.3",
40
+ "fs-extra": "^11.3.3",
41
+ "prompts": "^2.4.2"
42
+ },
43
+ "devDependencies": {
44
+ "@types/fs-extra": "^11.0.4",
45
+ "@types/node": "^25.2.3",
46
+ "copyfiles": "^2.4.1",
47
+ "typescript": "^5.3.3"
48
+ }
49
+ }