@dynamicworks/br-openspec 1.3.1 → 2.0.1

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 (72) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +210 -210
  3. package/README.pt-BR.md +212 -212
  4. package/bin/openspec.js +2 -2
  5. package/dist/commands/feedback.js +4 -4
  6. package/dist/commands/schema.js +60 -60
  7. package/dist/core/artifact-graph/instruction-loader.js +4 -4
  8. package/dist/core/artifact-graph/schema.js +5 -4
  9. package/dist/core/command-generation/adapters/amazon-q.js +5 -5
  10. package/dist/core/command-generation/adapters/antigravity.js +5 -5
  11. package/dist/core/command-generation/adapters/auggie.js +6 -6
  12. package/dist/core/command-generation/adapters/bob.js +6 -6
  13. package/dist/core/command-generation/adapters/claude.js +8 -8
  14. package/dist/core/command-generation/adapters/cline.js +5 -5
  15. package/dist/core/command-generation/adapters/codebuddy.js +7 -7
  16. package/dist/core/command-generation/adapters/codex.js +6 -6
  17. package/dist/core/command-generation/adapters/continue.js +7 -7
  18. package/dist/core/command-generation/adapters/costrict.js +6 -6
  19. package/dist/core/command-generation/adapters/crush.js +8 -8
  20. package/dist/core/command-generation/adapters/cursor.js +8 -8
  21. package/dist/core/command-generation/adapters/factory.js +6 -6
  22. package/dist/core/command-generation/adapters/gemini.js +5 -5
  23. package/dist/core/command-generation/adapters/github-copilot.js +5 -5
  24. package/dist/core/command-generation/adapters/iflow.js +8 -8
  25. package/dist/core/command-generation/adapters/junie.js +5 -5
  26. package/dist/core/command-generation/adapters/kilocode.js +1 -1
  27. package/dist/core/command-generation/adapters/kiro.js +5 -5
  28. package/dist/core/command-generation/adapters/lingma.js +8 -8
  29. package/dist/core/command-generation/adapters/opencode.js +5 -5
  30. package/dist/core/command-generation/adapters/pi.js +5 -5
  31. package/dist/core/command-generation/adapters/qoder.js +8 -8
  32. package/dist/core/command-generation/adapters/qwen.js +5 -5
  33. package/dist/core/command-generation/adapters/roocode.js +5 -5
  34. package/dist/core/command-generation/adapters/windsurf.js +8 -8
  35. package/dist/core/completions/factory.js +3 -2
  36. package/dist/core/completions/generators/bash-generator.js +41 -41
  37. package/dist/core/completions/generators/fish-generator.js +7 -7
  38. package/dist/core/completions/generators/powershell-generator.js +29 -29
  39. package/dist/core/completions/generators/zsh-generator.js +33 -33
  40. package/dist/core/completions/installers/fish-installer.js +13 -12
  41. package/dist/core/completions/installers/powershell-installer.js +16 -17
  42. package/dist/core/completions/installers/zsh-installer.js +1 -1
  43. package/dist/core/completions/templates/bash-templates.js +18 -18
  44. package/dist/core/completions/templates/fish-templates.js +32 -32
  45. package/dist/core/completions/templates/powershell-templates.js +19 -19
  46. package/dist/core/completions/templates/zsh-templates.js +30 -30
  47. package/dist/core/parsers/change-parser.js +7 -6
  48. package/dist/core/project-config.js +12 -13
  49. package/dist/core/shared/skill-generation.js +12 -12
  50. package/dist/core/specs-apply.js +37 -38
  51. package/dist/core/templates/workflows/apply-change.js +288 -288
  52. package/dist/core/templates/workflows/archive-change.js +251 -251
  53. package/dist/core/templates/workflows/bulk-archive-change.js +472 -472
  54. package/dist/core/templates/workflows/continue-change.js +212 -212
  55. package/dist/core/templates/workflows/explore.js +443 -443
  56. package/dist/core/templates/workflows/feedback.js +97 -97
  57. package/dist/core/templates/workflows/ff-change.js +178 -178
  58. package/dist/core/templates/workflows/propose.js +196 -196
  59. package/dist/core/templates/workflows/sync-specs.js +252 -252
  60. package/dist/core/templates/workflows/upstream-sync.js +93 -93
  61. package/dist/core/tools-manager.js +2 -2
  62. package/dist/messages/index.d.ts +111 -0
  63. package/dist/messages/index.js +1115 -977
  64. package/dist/utils/change-metadata.js +8 -7
  65. package/dist/utils/change-utils.js +12 -11
  66. package/package.json +82 -84
  67. package/schemas/spec-driven/schema.yaml +153 -153
  68. package/schemas/spec-driven/templates/design.md +19 -19
  69. package/schemas/spec-driven/templates/proposal.md +23 -23
  70. package/schemas/spec-driven/templates/spec.md +8 -8
  71. package/schemas/spec-driven/templates/tasks.md +9 -9
  72. package/scripts/postinstall.js +83 -83
@@ -2,103 +2,103 @@ export function getFeedbackSkillTemplate() {
2
2
  return {
3
3
  name: 'feedback',
4
4
  description: 'Colete e envie feedback do usuário sobre o BR-OpenSpec com enriquecimento de contexto e anonimização.',
5
- instructions: `Ajude o usuário a enviar feedback sobre o BR-OpenSpec.
6
-
7
- **Objetivo**: Guie o usuário através da coleta, enriquecimento e envio de feedback enquanto garante privacidade através de anonimização.
8
-
9
- **Processo**
10
-
11
- 1. **Reúna contexto da conversa**
12
- - Revise o histórico recente da conversa para contexto
13
- - Identifique qual tarefa estava sendo realizada
14
- - Note o que funcionou bem ou mal
15
- - Capture pontos de fricção específicos ou elogios
16
-
17
- 2. **Elabore feedback enriquecido**
18
- - Crie um título claro e descritivo (uma única frase, sem prefixo "Feedback:" necessário)
19
- - Escreva um corpo que inclua:
20
- - O que o usuário estava tentando fazer
21
- - O que aconteceu (bom ou ruim)
22
- - Contexto relevante da conversa
23
- - Quaisquer sugestões ou pedidos específicos
24
-
25
- 3. **Anonimize informações sensíveis**
26
- - Substitua caminhos de arquivo por \`<path>\` ou descrições genéricas
27
- - Substitua chaves de API, tokens, segredos por \`<redacted>\`
28
- - Substitua nomes de empresa/organização por \`<company>\`
29
- - Substitua nomes pessoais por \`<user>\`
30
- - Substitua URLs específicas por \`<url>\` a menos que sejam públicas/relevantes
31
- - Mantenha detalhes técnicos que ajudam a entender o problema
32
-
33
- 4. **Apresente o rascunho para aprovação**
34
- - Mostre o rascunho completo ao usuário
35
- - Exiba tanto título quanto corpo claramente
36
- - Peça aprovação explícita antes de enviar
37
- - Permita que o usuário solicite modificações
38
-
39
- 5. **Envie após confirmação**
40
- - Use o comando \`openspec feedback\` para enviar
41
- - Formato: \`openspec feedback "título" --body "conteúdo do corpo"\`
42
- - O comando adicionará automaticamente metadados (versão, plataforma, timestamp)
43
-
44
- **Exemplo de Rascunho**
45
-
46
- \`\`\`
47
- Título: O tratamento de erros no workflow de artifacts precisa melhorar
48
-
49
- Corpo:
50
- Eu estava trabalhando na criação de uma nova change e encontrei um problema com
51
- o workflow de artifacts. Quando tentei continuar após criar a
52
- proposal, o sistema não indicou claramente que eu precisava completar
53
- os specs primeiro.
54
-
55
- Sugestão: Adicione mensagens de erro mais claras que expliquem as cadeias de dependência
56
- no workflow de artifacts. Algo como "Não é possível criar design.md
57
- porque os specs não estão completos (0/2 done)."
58
-
59
- Contexto: Usando o schema spec-driven com <path>/my-project
60
- \`\`\`
61
-
62
- **Exemplos de Anonimização**
63
-
64
- Antes:
65
- \`\`\`
66
- Trabalhando em /Users/john/mycompany/auth-service/src/oauth.ts
67
- Falhou com API key: sk_live_abc123xyz
68
- Trabalhando na Acme Corp
69
- \`\`\`
70
-
71
- Depois:
72
- \`\`\`
73
- Trabalhando em <path>/oauth.ts
74
- Falhou com API key: <redacted>
75
- Trabalhando na <company>
76
- \`\`\`
77
-
78
- **Guardrails**
79
-
80
- - DEVE mostrar o rascunho completo antes de enviar
81
- - DEVE pedir aprovação explícita
82
- - DEVE anonimizar informações sensíveis
83
- - PERMITE que o usuário modifique o rascunho antes de enviar
84
- - NÃO envie sem confirmação do usuário
85
- - INCLUA contexto técnico relevante
86
- - MANTENHA insights específicos da conversa
87
-
88
- **Confirmação do Usuário Necessária**
89
-
90
- Sempre pergunte:
91
- \`\`\`
92
- Aqui está o feedback que elaborei:
93
-
94
- Título: [título]
95
-
96
- Corpo:
97
- [corpo]
98
-
99
- Parece bom? Posso modificá-lo se quiser, ou enviá-lo como está.
100
- \`\`\`
101
-
5
+ instructions: `Ajude o usuário a enviar feedback sobre o BR-OpenSpec.
6
+
7
+ **Objetivo**: Guie o usuário através da coleta, enriquecimento e envio de feedback enquanto garante privacidade através de anonimização.
8
+
9
+ **Processo**
10
+
11
+ 1. **Reúna contexto da conversa**
12
+ - Revise o histórico recente da conversa para contexto
13
+ - Identifique qual tarefa estava sendo realizada
14
+ - Note o que funcionou bem ou mal
15
+ - Capture pontos de fricção específicos ou elogios
16
+
17
+ 2. **Elabore feedback enriquecido**
18
+ - Crie um título claro e descritivo (uma única frase, sem prefixo "Feedback:" necessário)
19
+ - Escreva um corpo que inclua:
20
+ - O que o usuário estava tentando fazer
21
+ - O que aconteceu (bom ou ruim)
22
+ - Contexto relevante da conversa
23
+ - Quaisquer sugestões ou pedidos específicos
24
+
25
+ 3. **Anonimize informações sensíveis**
26
+ - Substitua caminhos de arquivo por \`<path>\` ou descrições genéricas
27
+ - Substitua chaves de API, tokens, segredos por \`<redacted>\`
28
+ - Substitua nomes de empresa/organização por \`<company>\`
29
+ - Substitua nomes pessoais por \`<user>\`
30
+ - Substitua URLs específicas por \`<url>\` a menos que sejam públicas/relevantes
31
+ - Mantenha detalhes técnicos que ajudam a entender o problema
32
+
33
+ 4. **Apresente o rascunho para aprovação**
34
+ - Mostre o rascunho completo ao usuário
35
+ - Exiba tanto título quanto corpo claramente
36
+ - Peça aprovação explícita antes de enviar
37
+ - Permita que o usuário solicite modificações
38
+
39
+ 5. **Envie após confirmação**
40
+ - Use o comando \`openspec feedback\` para enviar
41
+ - Formato: \`openspec feedback "título" --body "conteúdo do corpo"\`
42
+ - O comando adicionará automaticamente metadados (versão, plataforma, timestamp)
43
+
44
+ **Exemplo de Rascunho**
45
+
46
+ \`\`\`
47
+ Título: O tratamento de erros no workflow de artifacts precisa melhorar
48
+
49
+ Corpo:
50
+ Eu estava trabalhando na criação de uma nova change e encontrei um problema com
51
+ o workflow de artifacts. Quando tentei continuar após criar a
52
+ proposal, o sistema não indicou claramente que eu precisava completar
53
+ os specs primeiro.
54
+
55
+ Sugestão: Adicione mensagens de erro mais claras que expliquem as cadeias de dependência
56
+ no workflow de artifacts. Algo como "Não é possível criar design.md
57
+ porque os specs não estão completos (0/2 done)."
58
+
59
+ Contexto: Usando o schema spec-driven com <path>/my-project
60
+ \`\`\`
61
+
62
+ **Exemplos de Anonimização**
63
+
64
+ Antes:
65
+ \`\`\`
66
+ Trabalhando em /Users/john/mycompany/auth-service/src/oauth.ts
67
+ Falhou com API key: sk_live_abc123xyz
68
+ Trabalhando na Acme Corp
69
+ \`\`\`
70
+
71
+ Depois:
72
+ \`\`\`
73
+ Trabalhando em <path>/oauth.ts
74
+ Falhou com API key: <redacted>
75
+ Trabalhando na <company>
76
+ \`\`\`
77
+
78
+ **Guardrails**
79
+
80
+ - DEVE mostrar o rascunho completo antes de enviar
81
+ - DEVE pedir aprovação explícita
82
+ - DEVE anonimizar informações sensíveis
83
+ - PERMITE que o usuário modifique o rascunho antes de enviar
84
+ - NÃO envie sem confirmação do usuário
85
+ - INCLUA contexto técnico relevante
86
+ - MANTENHA insights específicos da conversa
87
+
88
+ **Confirmação do Usuário Necessária**
89
+
90
+ Sempre pergunte:
91
+ \`\`\`
92
+ Aqui está o feedback que elaborei:
93
+
94
+ Título: [título]
95
+
96
+ Corpo:
97
+ [corpo]
98
+
99
+ Parece bom? Posso modificá-lo se quiser, ou enviá-lo como está.
100
+ \`\`\`
101
+
102
102
  Só prossiga com o envio após o usuário confirmar.`,
103
103
  license: 'MIT',
104
104
  compatibility: 'Requer openspec CLI.',
@@ -2,95 +2,95 @@ export function getFfChangeSkillTemplate() {
2
2
  return {
3
3
  name: 'openspec-ff-change',
4
4
  description: 'Avance rapidamente pela criação de artifacts do BR-OpenSpec. Use quando o usuário quiser criar rapidamente todos os artifacts necessários para implementação sem passar por cada um individualmente.',
5
- instructions: `Avance rapidamente pela criação de artifacts - gere tudo o que é necessário para iniciar a implementação de uma vez só.
6
-
7
- **Entrada**: A solicitação do usuário deve incluir um nome de change (kebab-case) OU uma descrição do que ele quer construir.
8
-
9
- **Passos**
10
-
11
- 1. **Se nenhuma entrada clara for fornecida, pergunte o que ele quer construir**
12
-
13
- Use a ferramenta **AskUserQuestion** (aberta, sem opções pré-definidas) para perguntar:
14
- > "Em qual change você quer trabalhar? Descreva o que quer construir ou corrigir."
15
-
16
- A partir da descrição dele, derive um nome kebab-case (por exemplo, "adicionar autenticação de usuário" → \`add-user-auth\`).
17
-
18
- **IMPORTANTE**: NÃO prossiga sem entender o que o usuário quer construir.
19
-
20
- 2. **Crie o diretório da change**
21
- \`\`\`bash
22
- openspec new change "<nome>"
23
- \`\`\`
24
- Isso cria uma change com scaffold em \`openspec/changes/<nome>/\`.
25
-
26
- 3. **Obtenha a ordem de construção dos artifacts**
27
- \`\`\`bash
28
- openspec status --change "<nome>" --json
29
- \`\`\`
30
- Analise o JSON para obter:
31
- - \`applyRequires\`: array de IDs de artifacts necessários antes da implementação (por exemplo, \`["tasks"]\`)
32
- - \`artifacts\`: lista de todos os artifacts com seu status e dependências
33
-
34
- 4. **Crie artifacts em sequência até estar pronto para apply**
35
-
36
- Use a ferramenta **TodoWrite** para rastrear o progresso pelos artifacts.
37
-
38
- Percorra os artifacts em ordem de dependência (artifacts sem dependências pendentes primeiro):
39
-
40
- a. **Para cada artifact que está \`ready\` (dependências satisfeitas)**:
41
- - Obtenha instruções:
42
- \`\`\`bash
43
- openspec instructions <artifact-id> --change "<nome>" --json
44
- \`\`\`
45
- - O JSON de instruções inclui:
46
- - \`context\`: Contexto do projeto (restrições para você - NÃO inclua na saída)
47
- - \`rules\`: Regras específicas do artifact (restrições para você - NÃO inclua na saída)
48
- - \`template\`: A estrutura a ser usada para seu arquivo de saída
49
- - \`instruction\`: Orientação específica do schema para este tipo de artifact
50
- - \`outputPath\`: Onde escrever o artifact
51
- - \`dependencies\`: Artifacts concluídos para ler como contexto
52
- - Leia quaisquer arquivos de dependências concluídos para contexto
53
- - Crie o arquivo do artifact usando \`template\` como a estrutura
54
- - Aplique \`context\` e \`rules\` como restrições - mas NÃO copie-os para o arquivo
55
- - Mostre breve progresso: "✓ Criado <artifact-id>"
56
-
57
- b. **Continue até todos os artifacts \`applyRequires\` estarem completos**
58
- - Após criar cada artifact, reexecute \`openspec status --change "<nome>" --json\`
59
- - Verifique se cada ID de artifact em \`applyRequires\` tem \`status: "done"\` no array de artifacts
60
- - Pare quando todos os artifacts \`applyRequires\` estiverem done
61
-
62
- c. **Se um artifact requerer entrada do usuário** (contexto incerto):
63
- - Use a ferramenta **AskUserQuestion** para esclarecer
64
- - Depois continue com a criação
65
-
66
- 5. **Mostre o status final**
67
- \`\`\`bash
68
- openspec status --change "<nome>"
69
- \`\`\`
70
-
71
- **Saída**
72
-
73
- Após completar todos os artifacts, resuma:
74
- - Nome da change e localização
75
- - Lista de artifacts criados com breves descrições
76
- - O que está pronto: "Todos os artifacts criados! Pronto para implementação."
77
- - Prompt: "Execute \`/opsx:apply\` ou peça-me para implementar para começar a trabalhar nas tarefas."
78
-
79
- **Diretrizes de Criação de Artifacts**
80
-
81
- - Siga o campo \`instruction\` de \`openspec instructions\` para cada tipo de artifact
82
- - O schema define o que cada artifact deve conter - siga-o
83
- - Leia artifacts de dependência para contexto antes de criar novos
84
- - Use \`template\` como a estrutura para seu arquivo de saída - preencha suas seções
85
- - **IMPORTANTE**: \`context\` e \`rules\` são restrições para VOCÊ, não conteúdo para o arquivo
86
- - NÃO copie blocos \`<context>\`, \`<rules>\`, \`<project_context>\` para o artifact
87
- - Eles guiam o que você escreve, mas nunca devem aparecer na saída
88
-
89
- **Guardrails**
90
- - Crie TODOS os artifacts necessários para implementação (conforme definido pelo \`apply.requires\` do schema)
91
- - Sempre leia artifacts de dependência antes de criar um novo
92
- - Se o contexto estiver criticamente incerto, pergunte ao usuário - mas prefira tomar decisões razoáveis para manter o momento
93
- - Se uma change com aquele nome já existir, pergunte se o usuário quer continuar ela ou criar uma nova
5
+ instructions: `Avance rapidamente pela criação de artifacts - gere tudo o que é necessário para iniciar a implementação de uma vez só.
6
+
7
+ **Entrada**: A solicitação do usuário deve incluir um nome de change (kebab-case) OU uma descrição do que ele quer construir.
8
+
9
+ **Passos**
10
+
11
+ 1. **Se nenhuma entrada clara for fornecida, pergunte o que ele quer construir**
12
+
13
+ Use a ferramenta **AskUserQuestion** (aberta, sem opções pré-definidas) para perguntar:
14
+ > "Em qual change você quer trabalhar? Descreva o que quer construir ou corrigir."
15
+
16
+ A partir da descrição dele, derive um nome kebab-case (por exemplo, "adicionar autenticação de usuário" → \`add-user-auth\`).
17
+
18
+ **IMPORTANTE**: NÃO prossiga sem entender o que o usuário quer construir.
19
+
20
+ 2. **Crie o diretório da change**
21
+ \`\`\`bash
22
+ openspec new change "<nome>"
23
+ \`\`\`
24
+ Isso cria uma change com scaffold em \`openspec/changes/<nome>/\`.
25
+
26
+ 3. **Obtenha a ordem de construção dos artifacts**
27
+ \`\`\`bash
28
+ openspec status --change "<nome>" --json
29
+ \`\`\`
30
+ Analise o JSON para obter:
31
+ - \`applyRequires\`: array de IDs de artifacts necessários antes da implementação (por exemplo, \`["tasks"]\`)
32
+ - \`artifacts\`: lista de todos os artifacts com seu status e dependências
33
+
34
+ 4. **Crie artifacts em sequência até estar pronto para apply**
35
+
36
+ Use a ferramenta **TodoWrite** para rastrear o progresso pelos artifacts.
37
+
38
+ Percorra os artifacts em ordem de dependência (artifacts sem dependências pendentes primeiro):
39
+
40
+ a. **Para cada artifact que está \`ready\` (dependências satisfeitas)**:
41
+ - Obtenha instruções:
42
+ \`\`\`bash
43
+ openspec instructions <artifact-id> --change "<nome>" --json
44
+ \`\`\`
45
+ - O JSON de instruções inclui:
46
+ - \`context\`: Contexto do projeto (restrições para você - NÃO inclua na saída)
47
+ - \`rules\`: Regras específicas do artifact (restrições para você - NÃO inclua na saída)
48
+ - \`template\`: A estrutura a ser usada para seu arquivo de saída
49
+ - \`instruction\`: Orientação específica do schema para este tipo de artifact
50
+ - \`outputPath\`: Onde escrever o artifact
51
+ - \`dependencies\`: Artifacts concluídos para ler como contexto
52
+ - Leia quaisquer arquivos de dependências concluídos para contexto
53
+ - Crie o arquivo do artifact usando \`template\` como a estrutura
54
+ - Aplique \`context\` e \`rules\` como restrições - mas NÃO copie-os para o arquivo
55
+ - Mostre breve progresso: "✓ Criado <artifact-id>"
56
+
57
+ b. **Continue até todos os artifacts \`applyRequires\` estarem completos**
58
+ - Após criar cada artifact, reexecute \`openspec status --change "<nome>" --json\`
59
+ - Verifique se cada ID de artifact em \`applyRequires\` tem \`status: "done"\` no array de artifacts
60
+ - Pare quando todos os artifacts \`applyRequires\` estiverem done
61
+
62
+ c. **Se um artifact requerer entrada do usuário** (contexto incerto):
63
+ - Use a ferramenta **AskUserQuestion** para esclarecer
64
+ - Depois continue com a criação
65
+
66
+ 5. **Mostre o status final**
67
+ \`\`\`bash
68
+ openspec status --change "<nome>"
69
+ \`\`\`
70
+
71
+ **Saída**
72
+
73
+ Após completar todos os artifacts, resuma:
74
+ - Nome da change e localização
75
+ - Lista de artifacts criados com breves descrições
76
+ - O que está pronto: "Todos os artifacts criados! Pronto para implementação."
77
+ - Prompt: "Execute \`/opsx:apply\` ou peça-me para implementar para começar a trabalhar nas tarefas."
78
+
79
+ **Diretrizes de Criação de Artifacts**
80
+
81
+ - Siga o campo \`instruction\` de \`openspec instructions\` para cada tipo de artifact
82
+ - O schema define o que cada artifact deve conter - siga-o
83
+ - Leia artifacts de dependência para contexto antes de criar novos
84
+ - Use \`template\` como a estrutura para seu arquivo de saída - preencha suas seções
85
+ - **IMPORTANTE**: \`context\` e \`rules\` são restrições para VOCÊ, não conteúdo para o arquivo
86
+ - NÃO copie blocos \`<context>\`, \`<rules>\`, \`<project_context>\` para o artifact
87
+ - Eles guiam o que você escreve, mas nunca devem aparecer na saída
88
+
89
+ **Guardrails**
90
+ - Crie TODOS os artifacts necessários para implementação (conforme definido pelo \`apply.requires\` do schema)
91
+ - Sempre leia artifacts de dependência antes de criar um novo
92
+ - Se o contexto estiver criticamente incerto, pergunte ao usuário - mas prefira tomar decisões razoáveis para manter o momento
93
+ - Se uma change com aquele nome já existir, pergunte se o usuário quer continuar ela ou criar uma nova
94
94
  - Verifique se cada arquivo do artifact existe após escrever antes de prosseguir para o próximo`,
95
95
  license: 'MIT',
96
96
  compatibility: 'Requer openspec CLI.',
@@ -103,95 +103,95 @@ export function getOpsxFfCommandTemplate() {
103
103
  description: 'Crie uma change e gere todos os artifacts necessários para implementação de uma vez só',
104
104
  category: 'Workflow',
105
105
  tags: ['workflow', 'artifacts', 'experimental'],
106
- content: `Avance rapidamente pela criação de artifacts - gere tudo o que é necessário para iniciar a implementação.
107
-
108
- **Entrada**: O argumento após \`/opsx:ff\` é o nome da change (kebab-case), OU uma descrição do que o usuário quer construir.
109
-
110
- **Passos**
111
-
112
- 1. **Se nenhuma entrada for fornecida, pergunte o que ele quer construir**
113
-
114
- Use a ferramenta **AskUserQuestion** (aberta, sem opções pré-definidas) para perguntar:
115
- > "Em qual change você quer trabalhar? Descreva o que quer construir ou corrigir."
116
-
117
- A partir da descrição dele, derive um nome kebab-case (por exemplo, "adicionar autenticação de usuário" → \`add-user-auth\`).
118
-
119
- **IMPORTANTE**: NÃO prossiga sem entender o que o usuário quer construir.
120
-
121
- 2. **Crie o diretório da change**
122
- \`\`\`bash
123
- openspec new change "<nome>"
124
- \`\`\`
125
- Isso cria uma change com scaffold em \`openspec/changes/<nome>/\`.
126
-
127
- 3. **Obtenha a ordem de construção dos artifacts**
128
- \`\`\`bash
129
- openspec status --change "<nome>" --json
130
- \`\`\`
131
- Analise o JSON para obter:
132
- - \`applyRequires\`: array de IDs de artifacts necessários antes da implementação (por exemplo, \`["tasks"]\`)
133
- - \`artifacts\`: lista de todos os artifacts com seu status e dependências
134
-
135
- 4. **Crie artifacts em sequência até estar pronto para apply**
136
-
137
- Use a ferramenta **TodoWrite** para rastrear o progresso pelos artifacts.
138
-
139
- Percorra os artifacts em ordem de dependência (artifacts sem dependências pendentes primeiro):
140
-
141
- a. **Para cada artifact que está \`ready\` (dependências satisfeitas)**:
142
- - Obtenha instruções:
143
- \`\`\`bash
144
- openspec instructions <artifact-id> --change "<nome>" --json
145
- \`\`\`
146
- - O JSON de instruções inclui:
147
- - \`context\`: Contexto do projeto (restrições para você - NÃO inclua na saída)
148
- - \`rules\`: Regras específicas do artifact (restrições para você - NÃO inclua na saída)
149
- - \`template\`: A estrutura a ser usada para seu arquivo de saída
150
- - \`instruction\`: Orientação específica do schema para este tipo de artifact
151
- - \`outputPath\`: Onde escrever o artifact
152
- - \`dependencies\`: Artifacts concluídos para ler como contexto
153
- - Leia quaisquer arquivos de dependências concluídos para contexto
154
- - Crie o arquivo do artifact usando \`template\` como a estrutura
155
- - Aplique \`context\` e \`rules\` como restrições - mas NÃO copie-os para o arquivo
156
- - Mostre breve progresso: "✓ Criado <artifact-id>"
157
-
158
- b. **Continue até todos os artifacts \`applyRequires\` estarem completos**
159
- - Após criar cada artifact, reexecute \`openspec status --change "<nome>" --json\`
160
- - Verifique se cada ID de artifact em \`applyRequires\` tem \`status: "done"\` no array de artifacts
161
- - Pare quando todos os artifacts \`applyRequires\` estiverem done
162
-
163
- c. **Se um artifact requerer entrada do usuário** (contexto incerto):
164
- - Use a ferramenta **AskUserQuestion** para esclarecer
165
- - Depois continue com a criação
166
-
167
- 5. **Mostre o status final**
168
- \`\`\`bash
169
- openspec status --change "<nome>"
170
- \`\`\`
171
-
172
- **Saída**
173
-
174
- Após completar todos os artifacts, resuma:
175
- - Nome da change e localização
176
- - Lista de artifacts criados com breves descrições
177
- - O que está pronto: "Todos os artifacts criados! Pronto para implementação."
178
- - Prompt: "Execute \`/opsx:apply\` para começar a implementar."
179
-
180
- **Diretrizes de Criação de Artifacts**
181
-
182
- - Siga o campo \`instruction\` de \`openspec instructions\` para cada tipo de artifact
183
- - O schema define o que cada artifact deve conter - siga-o
184
- - Leia artifacts de dependência para contexto antes de criar novos
185
- - Use \`template\` como a estrutura para seu arquivo de saída - preencha suas seções
186
- - **IMPORTANTE**: \`context\` e \`rules\` são restrições para VOCÊ, não conteúdo para o arquivo
187
- - NÃO copie blocos \`<context>\`, \`<rules>\`, \`<project_context>\` para o artifact
188
- - Eles guiam o que você escreve, mas nunca devem aparecer na saída
189
-
190
- **Guardrails**
191
- - Crie TODOS os artifacts necessários para implementação (conforme definido pelo \`apply.requires\` do schema)
192
- - Sempre leia artifacts de dependência antes de criar um novo
193
- - Se o contexto estiver criticamente incerto, pergunte ao usuário - mas prefira tomar decisões razoáveis para manter o momento
194
- - Se uma change com aquele nome já existir, pergunte se o usuário quer continuar ela ou criar uma nova
106
+ content: `Avance rapidamente pela criação de artifacts - gere tudo o que é necessário para iniciar a implementação.
107
+
108
+ **Entrada**: O argumento após \`/opsx:ff\` é o nome da change (kebab-case), OU uma descrição do que o usuário quer construir.
109
+
110
+ **Passos**
111
+
112
+ 1. **Se nenhuma entrada for fornecida, pergunte o que ele quer construir**
113
+
114
+ Use a ferramenta **AskUserQuestion** (aberta, sem opções pré-definidas) para perguntar:
115
+ > "Em qual change você quer trabalhar? Descreva o que quer construir ou corrigir."
116
+
117
+ A partir da descrição dele, derive um nome kebab-case (por exemplo, "adicionar autenticação de usuário" → \`add-user-auth\`).
118
+
119
+ **IMPORTANTE**: NÃO prossiga sem entender o que o usuário quer construir.
120
+
121
+ 2. **Crie o diretório da change**
122
+ \`\`\`bash
123
+ openspec new change "<nome>"
124
+ \`\`\`
125
+ Isso cria uma change com scaffold em \`openspec/changes/<nome>/\`.
126
+
127
+ 3. **Obtenha a ordem de construção dos artifacts**
128
+ \`\`\`bash
129
+ openspec status --change "<nome>" --json
130
+ \`\`\`
131
+ Analise o JSON para obter:
132
+ - \`applyRequires\`: array de IDs de artifacts necessários antes da implementação (por exemplo, \`["tasks"]\`)
133
+ - \`artifacts\`: lista de todos os artifacts com seu status e dependências
134
+
135
+ 4. **Crie artifacts em sequência até estar pronto para apply**
136
+
137
+ Use a ferramenta **TodoWrite** para rastrear o progresso pelos artifacts.
138
+
139
+ Percorra os artifacts em ordem de dependência (artifacts sem dependências pendentes primeiro):
140
+
141
+ a. **Para cada artifact que está \`ready\` (dependências satisfeitas)**:
142
+ - Obtenha instruções:
143
+ \`\`\`bash
144
+ openspec instructions <artifact-id> --change "<nome>" --json
145
+ \`\`\`
146
+ - O JSON de instruções inclui:
147
+ - \`context\`: Contexto do projeto (restrições para você - NÃO inclua na saída)
148
+ - \`rules\`: Regras específicas do artifact (restrições para você - NÃO inclua na saída)
149
+ - \`template\`: A estrutura a ser usada para seu arquivo de saída
150
+ - \`instruction\`: Orientação específica do schema para este tipo de artifact
151
+ - \`outputPath\`: Onde escrever o artifact
152
+ - \`dependencies\`: Artifacts concluídos para ler como contexto
153
+ - Leia quaisquer arquivos de dependências concluídos para contexto
154
+ - Crie o arquivo do artifact usando \`template\` como a estrutura
155
+ - Aplique \`context\` e \`rules\` como restrições - mas NÃO copie-os para o arquivo
156
+ - Mostre breve progresso: "✓ Criado <artifact-id>"
157
+
158
+ b. **Continue até todos os artifacts \`applyRequires\` estarem completos**
159
+ - Após criar cada artifact, reexecute \`openspec status --change "<nome>" --json\`
160
+ - Verifique se cada ID de artifact em \`applyRequires\` tem \`status: "done"\` no array de artifacts
161
+ - Pare quando todos os artifacts \`applyRequires\` estiverem done
162
+
163
+ c. **Se um artifact requerer entrada do usuário** (contexto incerto):
164
+ - Use a ferramenta **AskUserQuestion** para esclarecer
165
+ - Depois continue com a criação
166
+
167
+ 5. **Mostre o status final**
168
+ \`\`\`bash
169
+ openspec status --change "<nome>"
170
+ \`\`\`
171
+
172
+ **Saída**
173
+
174
+ Após completar todos os artifacts, resuma:
175
+ - Nome da change e localização
176
+ - Lista de artifacts criados com breves descrições
177
+ - O que está pronto: "Todos os artifacts criados! Pronto para implementação."
178
+ - Prompt: "Execute \`/opsx:apply\` para começar a implementar."
179
+
180
+ **Diretrizes de Criação de Artifacts**
181
+
182
+ - Siga o campo \`instruction\` de \`openspec instructions\` para cada tipo de artifact
183
+ - O schema define o que cada artifact deve conter - siga-o
184
+ - Leia artifacts de dependência para contexto antes de criar novos
185
+ - Use \`template\` como a estrutura para seu arquivo de saída - preencha suas seções
186
+ - **IMPORTANTE**: \`context\` e \`rules\` são restrições para VOCÊ, não conteúdo para o arquivo
187
+ - NÃO copie blocos \`<context>\`, \`<rules>\`, \`<project_context>\` para o artifact
188
+ - Eles guiam o que você escreve, mas nunca devem aparecer na saída
189
+
190
+ **Guardrails**
191
+ - Crie TODOS os artifacts necessários para implementação (conforme definido pelo \`apply.requires\` do schema)
192
+ - Sempre leia artifacts de dependência antes de criar um novo
193
+ - Se o contexto estiver criticamente incerto, pergunte ao usuário - mas prefira tomar decisões razoáveis para manter o momento
194
+ - Se uma change com aquele nome já existir, pergunte se o usuário quer continuar ela ou criar uma nova
195
195
  - Verifique se cada arquivo do artifact existe após escrever antes de prosseguir para o próximo`
196
196
  };
197
197
  }