@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.
- package/LICENSE +22 -22
- package/README.md +210 -210
- package/README.pt-BR.md +212 -212
- package/bin/openspec.js +2 -2
- package/dist/commands/feedback.js +4 -4
- package/dist/commands/schema.js +60 -60
- package/dist/core/artifact-graph/instruction-loader.js +4 -4
- package/dist/core/artifact-graph/schema.js +5 -4
- package/dist/core/command-generation/adapters/amazon-q.js +5 -5
- package/dist/core/command-generation/adapters/antigravity.js +5 -5
- package/dist/core/command-generation/adapters/auggie.js +6 -6
- package/dist/core/command-generation/adapters/bob.js +6 -6
- package/dist/core/command-generation/adapters/claude.js +8 -8
- package/dist/core/command-generation/adapters/cline.js +5 -5
- package/dist/core/command-generation/adapters/codebuddy.js +7 -7
- package/dist/core/command-generation/adapters/codex.js +6 -6
- package/dist/core/command-generation/adapters/continue.js +7 -7
- package/dist/core/command-generation/adapters/costrict.js +6 -6
- package/dist/core/command-generation/adapters/crush.js +8 -8
- package/dist/core/command-generation/adapters/cursor.js +8 -8
- package/dist/core/command-generation/adapters/factory.js +6 -6
- package/dist/core/command-generation/adapters/gemini.js +5 -5
- package/dist/core/command-generation/adapters/github-copilot.js +5 -5
- package/dist/core/command-generation/adapters/iflow.js +8 -8
- package/dist/core/command-generation/adapters/junie.js +5 -5
- package/dist/core/command-generation/adapters/kilocode.js +1 -1
- package/dist/core/command-generation/adapters/kiro.js +5 -5
- package/dist/core/command-generation/adapters/lingma.js +8 -8
- package/dist/core/command-generation/adapters/opencode.js +5 -5
- package/dist/core/command-generation/adapters/pi.js +5 -5
- package/dist/core/command-generation/adapters/qoder.js +8 -8
- package/dist/core/command-generation/adapters/qwen.js +5 -5
- package/dist/core/command-generation/adapters/roocode.js +5 -5
- package/dist/core/command-generation/adapters/windsurf.js +8 -8
- package/dist/core/completions/factory.js +3 -2
- package/dist/core/completions/generators/bash-generator.js +41 -41
- package/dist/core/completions/generators/fish-generator.js +7 -7
- package/dist/core/completions/generators/powershell-generator.js +29 -29
- package/dist/core/completions/generators/zsh-generator.js +33 -33
- package/dist/core/completions/installers/fish-installer.js +13 -12
- package/dist/core/completions/installers/powershell-installer.js +16 -17
- package/dist/core/completions/installers/zsh-installer.js +1 -1
- package/dist/core/completions/templates/bash-templates.js +18 -18
- package/dist/core/completions/templates/fish-templates.js +32 -32
- package/dist/core/completions/templates/powershell-templates.js +19 -19
- package/dist/core/completions/templates/zsh-templates.js +30 -30
- package/dist/core/parsers/change-parser.js +7 -6
- package/dist/core/project-config.js +12 -13
- package/dist/core/shared/skill-generation.js +12 -12
- package/dist/core/specs-apply.js +37 -38
- package/dist/core/templates/workflows/apply-change.js +288 -288
- package/dist/core/templates/workflows/archive-change.js +251 -251
- package/dist/core/templates/workflows/bulk-archive-change.js +472 -472
- package/dist/core/templates/workflows/continue-change.js +212 -212
- package/dist/core/templates/workflows/explore.js +443 -443
- package/dist/core/templates/workflows/feedback.js +97 -97
- package/dist/core/templates/workflows/ff-change.js +178 -178
- package/dist/core/templates/workflows/propose.js +196 -196
- package/dist/core/templates/workflows/sync-specs.js +252 -252
- package/dist/core/templates/workflows/upstream-sync.js +93 -93
- package/dist/core/tools-manager.js +2 -2
- package/dist/messages/index.d.ts +111 -0
- package/dist/messages/index.js +1115 -977
- package/dist/utils/change-metadata.js +8 -7
- package/dist/utils/change-utils.js +12 -11
- package/package.json +82 -84
- package/schemas/spec-driven/schema.yaml +153 -153
- package/schemas/spec-driven/templates/design.md +19 -19
- package/schemas/spec-driven/templates/proposal.md +23 -23
- package/schemas/spec-driven/templates/spec.md +8 -8
- package/schemas/spec-driven/templates/tasks.md +9 -9
- 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
|
}
|