spec-first-copilot 0.6.0-beta.8 → 0.6.0-beta.9

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/bin/cli.js CHANGED
@@ -8,19 +8,19 @@ const args = process.argv.slice(2);
8
8
  const command = args[0];
9
9
 
10
10
  function printUsage() {
11
- console.log('Usage:');
12
- console.log(' spec-first-copilot init --name=<project-name> [--target=<path>]');
13
- console.log(' spec-first-copilot update [--target=<path>] [--force]');
11
+ console.log('Uso:');
12
+ console.log(' spec-first-copilot init --name=<nome-do-projeto> [--target=<caminho>]');
13
+ console.log(' spec-first-copilot update [--target=<caminho>] [--force]');
14
14
  console.log('');
15
- console.log('Commands:');
16
- console.log(' init Create a new spec-first project');
17
- console.log(' update Update an existing project with new framework files');
18
- console.log(' (adds missing files, updates framework files like skills/adapters/agents)');
15
+ console.log('Comandos:');
16
+ console.log(' init Cria um novo projeto spec-first');
17
+ console.log(' update Atualiza projeto existente com arquivos novos do framework');
18
+ console.log(' (adiciona faltantes, atualiza skills/adapters/agents/templates)');
19
19
  console.log('');
20
- console.log('Options:');
21
- console.log(' --name=<name> Project name (required for init)');
22
- console.log(' --target=<path> Target directory (defaults to ./<name> for init, cwd for update)');
23
- console.log(' --force Force update all files, not just framework files (use with caution)');
20
+ console.log('Opções:');
21
+ console.log(' --name=<nome> Nome do projeto (obrigatório no init)');
22
+ console.log(' --target=<path> Diretório destino (default: ./<nome> no init, cwd no update)');
23
+ console.log(' --force Força atualizar TODOS arquivos, não os do framework (cuidado)');
24
24
  }
25
25
 
26
26
  function parseArgs(args) {
@@ -40,7 +40,7 @@ if (command === 'init') {
40
40
  const opts = parseArgs(args.slice(1));
41
41
 
42
42
  if (!opts.name) {
43
- console.error('Error: --name is required.\n');
43
+ console.error('Erro: --name é obrigatório.\n');
44
44
  printUsage();
45
45
  process.exit(1);
46
46
  }
@@ -64,7 +64,7 @@ if (command === 'init') {
64
64
  } else {
65
65
  printUsage();
66
66
  if (command) {
67
- console.error(`\nUnknown command: "${command}"`);
67
+ console.error(`\nComando desconhecido: "${command}"`);
68
68
  }
69
69
  process.exit(command ? 1 : 0);
70
70
  }
package/lib/init.js CHANGED
@@ -42,19 +42,31 @@ function init({ name, templatesDir, targetDir }) {
42
42
  const dest = targetDir || path.resolve(process.cwd(), name);
43
43
 
44
44
  const existed = fs.existsSync(dest);
45
- console.log(`\n${existed ? 'Initializing' : 'Creating'} project "${name}" in ${dest}\n`);
45
+ console.log(`\n${existed ? 'Inicializando' : 'Criando'} projeto "${name}" em ${dest}\n`);
46
46
 
47
47
  const replacements = { [PLACEHOLDER]: name };
48
48
  copyDir(templatesDir, dest, replacements);
49
49
  patchProjectName(dest, name);
50
50
 
51
- console.log(`Done! Project "${name}" is ready.`);
52
- console.log('\nNext steps:');
51
+ console.log(`Pronto! Projeto "${name}" criado.`);
52
+ console.log('\nPróximos passos:');
53
53
  console.log(` 1. cd ${name}`);
54
- console.log(' 2. Create a folder in workspace/Input/ with your project files (e.g. workspace/Input/my_app/)');
55
- console.log(' 3. (Optional) Copy sfw.config.yml.example to sfw.config.yml and configure your backend');
56
- console.log(' 4. Open VS Code with Copilot Chat and run: /sf-start <folder-name>');
57
- console.log(' Framework detects first-run automatically (creates docs/) vs feature (updates docs/).');
54
+ console.log(' 2. Crie uma pasta em workspace/Input/ com os insumos do seu projeto');
55
+ console.log(' (ex: workspace/Input/meu_app/requisitos.md)');
56
+ console.log('');
57
+ console.log(' 3. (Opcional) Configure o backend de input/output:');
58
+ console.log(' cp sfw.config.yml.example sfw.config.yml');
59
+ console.log(' Sem isso, o framework roda 100% local (sem Confluence/etc.)');
60
+ console.log('');
61
+ console.log(' 4. (Opcional, se vai usar Confluence) Prepare o ambiente ANTES de abrir o VS Code:');
62
+ console.log(' node .github/scripts/bootstrap-confluence.js');
63
+ console.log(' Valida uvx, coleta credenciais, gera .mcp.json e pré-cacheia o MCP.');
64
+ console.log(' Evita o ciclo "abrir Copilot → faltar dep → reiniciar VS Code".');
65
+ console.log('');
66
+ console.log(' 5. Abra o VS Code com Copilot Chat e rode:');
67
+ console.log(' /sf-start <nome-da-pasta-em-Input>');
68
+ console.log(' O framework detecta first-run automaticamente (cria docs/) vs feature');
69
+ console.log(' (atualiza docs/ via merge).');
58
70
  console.log('');
59
71
  }
60
72
 
package/lib/update.js CHANGED
@@ -20,36 +20,36 @@ function update({ templatesDir, targetDir, force }) {
20
20
  const dest = targetDir || process.cwd();
21
21
 
22
22
  if (!fs.existsSync(dest)) {
23
- console.error(`Error: directory "${dest}" does not exist.`);
24
- console.error('Run "spec-first-copilot init --name=<name>" first to create a project.');
23
+ console.error(`Erro: diretório "${dest}" não existe.`);
24
+ console.error('Rode "spec-first-copilot init --name=<nome>" primeiro pra criar o projeto.');
25
25
  process.exit(1);
26
26
  }
27
27
 
28
28
  const githubDir = path.join(dest, '.github');
29
29
  if (!fs.existsSync(githubDir)) {
30
- console.error('Error: not a spec-first project (missing .github/ directory).');
31
- console.error('Run "spec-first-copilot init --name=<name>" first.');
30
+ console.error('Erro: não é um projeto spec-first (pasta .github/ não encontrada).');
31
+ console.error('Rode "spec-first-copilot init --name=<nome>" primeiro.');
32
32
  process.exit(1);
33
33
  }
34
34
 
35
- console.log(`\nUpdating project in ${dest}\n`);
35
+ console.log(`\nAtualizando projeto em ${dest}\n`);
36
36
 
37
37
  const stats = { added: [], updated: [], skipped: 0 };
38
38
  syncDir(templatesDir, dest, force, stats, dest);
39
39
 
40
40
  console.log('');
41
41
  if (stats.added.length > 0) {
42
- console.log(`Added (${stats.added.length}):`);
42
+ console.log(`Adicionados (${stats.added.length}):`);
43
43
  for (const f of stats.added) console.log(` + ${f}`);
44
44
  }
45
45
  if (stats.updated.length > 0) {
46
- console.log(`Updated (${stats.updated.length}):`);
46
+ console.log(`Atualizados (${stats.updated.length}):`);
47
47
  for (const f of stats.updated) console.log(` ~ ${f}`);
48
48
  }
49
49
  if (stats.added.length === 0 && stats.updated.length === 0) {
50
- console.log('Already up to date no new files to add.');
50
+ console.log(' está atualizadonenhum arquivo novo pra adicionar.');
51
51
  } else {
52
- console.log(`\n${stats.added.length} added, ${stats.updated.length} updated, ${stats.skipped} unchanged`);
52
+ console.log(`\n${stats.added.length} adicionado(s), ${stats.updated.length} atualizado(s), ${stats.skipped} inalterado(s)`);
53
53
  }
54
54
 
55
55
  console.log('');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-first-copilot",
3
- "version": "0.6.0-beta.8",
3
+ "version": "0.6.0-beta.9",
4
4
  "description": "Spec-first workflow kit for GitHub Copilot — AI-driven development with specs, not guesswork",
5
5
  "bin": {
6
6
  "spec-first-copilot": "bin/cli.js"
@@ -8,6 +8,34 @@
8
8
 
9
9
  ---
10
10
 
11
+ ## 0.6.0-beta.9 (2026-04-13)
12
+
13
+ ### CLI em pt-BR + dica de bootstrap-confluence no init
14
+
15
+ Mensagens do CLI (`init` e `update`) traduzidas para pt-BR — usuário final é o público.
16
+
17
+ Mensagem do `init` reescrita para deixar **explícito o passo opcional de pré-setup
18
+ do Confluence**:
19
+
20
+ ```
21
+ Pronto! Projeto "X" criado.
22
+
23
+ Próximos passos:
24
+ 1. cd X
25
+ 2. Crie uma pasta em workspace/Input/ com os insumos do seu projeto
26
+ 3. (Opcional) Configure o backend de input/output:
27
+ cp sfw.config.yml.example sfw.config.yml
28
+ 4. (Opcional, se vai usar Confluence) Prepare o ambiente ANTES de abrir o VS Code:
29
+ node .github/scripts/bootstrap-confluence.js
30
+ 5. Abra o VS Code com Copilot Chat e rode: /sf-start <nome-da-pasta>
31
+ ```
32
+
33
+ O passo 4 era invisível antes — só aparecia inline na "Dica" do skill `/sf-mcp`.
34
+ Agora aparece logo no fim do `init`, no momento exato em que o usuário vai decidir
35
+ se prepara o Confluence ou não.
36
+
37
+ ---
38
+
11
39
  ## 0.6.0-beta.8 (2026-04-13)
12
40
 
13
41
  ### Novo: `bootstrap-confluence.js` (opcional, pré-Copilot)