@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
@@ -669,6 +669,38 @@ export const COMPLETION_MESSAGES = {
669
669
  warningCouldNotRemoveLegacy: (path, err) => `Aviso: Não foi possível remover arquivo legado ${path}: ${err}`,
670
670
  powershellCompletionHeader: '# Script de autocompletar PowerShell para a CLI do BR-OpenSpec',
671
671
  powershellCompletionNote: '# Gerado automaticamente - não edite manualmente',
672
+ // Fish installer messages
673
+ fishAlreadyInstalled: 'Script de autocomplete já está instalado (atualizado)',
674
+ fishAlreadyInstalledDetail: 'O script de autocomplete já está instalado e atualizado.',
675
+ fishAutoLoadsHint: 'O Fish carrega automaticamente os scripts de autocomplete - devem estar disponíveis imediatamente.',
676
+ fishUpdatedWithBackup: 'Script de autocomplete atualizado com sucesso (versão anterior salva em backup)',
677
+ fishUpdated: 'Script de autocomplete atualizado com sucesso',
678
+ fishInstalled: 'Script de autocomplete instalado com sucesso para Fish',
679
+ fishAutoLoadsDir: 'O Fish carrega automaticamente os scripts de autocomplete de ~/.config/fish/completions/',
680
+ fishAvailableImmediately: 'Os autocompletes estão disponíveis imediatamente - sem necessidade de reiniciar o shell.',
681
+ fishFailedToInstall: (error) => `Falha ao instalar script de autocomplete: ${error}`,
682
+ fishNotInstalled: 'Script de autocomplete não está instalado',
683
+ fishUninstalled: 'Script de autocomplete desinstalado com sucesso',
684
+ fishFailedToUninstall: (error) => `Falha ao desinstalar script de autocomplete: ${error}`,
685
+ // PowerShell installer messages
686
+ powershellUtf16BEUnsupported: 'Arquivo codificado em UTF-16 BE não é suportado. Salve novamente como UTF-8 ou UTF-16 LE e tente novamente.',
687
+ powershellAlreadyInstalled: 'Script de autocomplete já está instalado (atualizado)',
688
+ powershellAlreadyInstalledDetail: 'O script de autocomplete já está instalado e atualizado.',
689
+ powershellAlreadyInstalledHint: 'Se o autocomplete não estiver funcionando, tente reiniciar o PowerShell ou execute: . $PROFILE',
690
+ powershellUpdatedWithBackup: 'Script de autocomplete atualizado com sucesso (versão anterior salva em backup)',
691
+ powershellUpdated: 'Script de autocomplete atualizado com sucesso',
692
+ powershellInstalledWithProfile: 'Script de autocomplete instalado e perfil do PowerShell configurado com sucesso',
693
+ powershellInstalled: 'Script de autocomplete instalado com sucesso para PowerShell',
694
+ powershellFailedToInstall: (error) => `Falha ao instalar script de autocomplete: ${error}`,
695
+ powershellScriptInstalled: 'Script de autocomplete instalado com sucesso.',
696
+ powershellEnableCompletions: (profilePath) => `Para ativar o autocomplete, adicione o seguinte ao seu perfil PowerShell (${profilePath}):`,
697
+ powershellSourceComment: '# Carrega os autocompletes do BR-OpenSpec',
698
+ powershellThenRestart: 'Depois reinicie o PowerShell ou execute: . $PROFILE',
699
+ powershellNotInstalled: 'Script de autocomplete não está instalado',
700
+ powershellUninstalled: 'Script de autocomplete desinstalado com sucesso',
701
+ powershellFailedToUninstall: (error) => `Falha ao desinstalar script de autocomplete: ${error}`,
702
+ // Zsh installer (missing)
703
+ zshNotInstalled: 'Script de autocomplete não está instalado',
672
704
  };
673
705
  // ═══════════════════════════════════════════════════════════
674
706
  // Comandos — Feedback (src/commands/feedback.ts)
@@ -950,132 +982,132 @@ export const PROJECT_CONFIG_MESSAGES = {
950
982
  // ═══════════════════════════════════════════════════════════
951
983
  export const NEW_CHANGE_TEMPLATE_MESSAGES = {
952
984
  skillDescription: 'Inicie uma nova change do BR-OpenSpec usando o workflow experimental de artifacts. Use quando o usuário quiser criar uma nova funcionalidade, correção ou modificação com uma abordagem estruturada passo a passo.',
953
- skillInstructions: `Inicie uma nova change usando a abordagem experimental orientada a artifacts.
954
-
955
- **Entrada**: A solicitação do usuário deve incluir um nome de change (kebab-case) OU uma descrição do que ele quer construir.
956
-
957
- **Passos**
958
-
959
- 1. **Se nenhuma entrada clara for fornecida, pergunte o que ele quer construir**
960
-
961
- Use a ferramenta **AskUserQuestion** (aberta, sem opções pré-definidas) para perguntar:
962
- > "Em qual change você quer trabalhar? Descreva o que quer construir ou corrigir."
963
-
964
- A partir da descrição dele, derive um nome kebab-case (por exemplo, "adicionar autenticação de usuário" → \`add-user-auth\`).
965
-
966
- **IMPORTANTE**: NÃO prossiga sem entender o que o usuário quer construir.
967
-
968
- 2. **Determine o schema de workflow**
969
-
970
- Use o schema padrão (omitir \`--schema\`) a menos que o usuário solicite explicitamente um workflow diferente.
971
-
972
- **Use um schema diferente apenas se o usuário mencionar:**
973
- - Um nome de schema específico → use \`--schema <nome>\`
974
- - "mostrar workflows" ou "quais workflows" → execute \`openspec schemas --json\` e deixe-o escolher
975
-
976
- **Caso contrário**: Omita \`--schema\` para usar o padrão.
977
-
978
- 3. **Crie o diretório da change**
979
- \`\`\`bash
980
- openspec new change "<nome>"
981
- \`\`\`
982
- Adicione \`--schema <nome>\` apenas se o usuário solicitou um workflow específico.
983
- Isso cria uma change com scaffold em \`openspec/changes/<nome>/\` com o schema selecionado.
984
-
985
- 4. **Mostre o status dos artifacts**
986
- \`\`\`bash
987
- openspec status --change "<nome>"
988
- \`\`\`
989
- Isso mostra quais artifacts precisam ser criados e quais estão prontos (dependências satisfeitas).
990
-
991
- 5. **Obtenha instruções para o primeiro artifact**
992
- O primeiro artifact depende do schema (por exemplo, \`proposal\` para spec-driven).
993
- Verifique a saída do status para encontrar o primeiro artifact com status "ready".
994
- \`\`\`bash
995
- openspec instructions <primeiro-artifact-id> --change "<nome>"
996
- \`\`\`
997
- Isso produz o template e contexto para criar o primeiro artifact.
998
-
999
- 6. **PARE e aguarde direção do usuário**
1000
-
1001
- **Saída**
1002
-
1003
- Após completar os passos, resuma:
1004
- - Nome da change e localização
1005
- - Schema/workflow sendo usado e sua sequência de artifacts
1006
- - Status atual (0/N artifacts completos)
1007
- - O template para o primeiro artifact
1008
- - Prompt: "Pronto para criar o primeiro artifact? Basta descrever do que se trata esta change e eu elaboro um rascunho, ou peça-me para continuar."
1009
-
1010
- **Guardrails**
1011
- - NÃO crie nenhum artifact ainda - apenas mostre as instruções
1012
- - NÃO avance além de mostrar o template do primeiro artifact
1013
- - Se o nome for inválido (não kebab-case), peça um nome válido
1014
- - Se uma change com aquele nome já existir, sugira continuar aquela change em vez disso
985
+ skillInstructions: `Inicie uma nova change usando a abordagem experimental orientada a artifacts.
986
+
987
+ **Entrada**: A solicitação do usuário deve incluir um nome de change (kebab-case) OU uma descrição do que ele quer construir.
988
+
989
+ **Passos**
990
+
991
+ 1. **Se nenhuma entrada clara for fornecida, pergunte o que ele quer construir**
992
+
993
+ Use a ferramenta **AskUserQuestion** (aberta, sem opções pré-definidas) para perguntar:
994
+ > "Em qual change você quer trabalhar? Descreva o que quer construir ou corrigir."
995
+
996
+ A partir da descrição dele, derive um nome kebab-case (por exemplo, "adicionar autenticação de usuário" → \`add-user-auth\`).
997
+
998
+ **IMPORTANTE**: NÃO prossiga sem entender o que o usuário quer construir.
999
+
1000
+ 2. **Determine o schema de workflow**
1001
+
1002
+ Use o schema padrão (omitir \`--schema\`) a menos que o usuário solicite explicitamente um workflow diferente.
1003
+
1004
+ **Use um schema diferente apenas se o usuário mencionar:**
1005
+ - Um nome de schema específico → use \`--schema <nome>\`
1006
+ - "mostrar workflows" ou "quais workflows" → execute \`openspec schemas --json\` e deixe-o escolher
1007
+
1008
+ **Caso contrário**: Omita \`--schema\` para usar o padrão.
1009
+
1010
+ 3. **Crie o diretório da change**
1011
+ \`\`\`bash
1012
+ openspec new change "<nome>"
1013
+ \`\`\`
1014
+ Adicione \`--schema <nome>\` apenas se o usuário solicitou um workflow específico.
1015
+ Isso cria uma change com scaffold em \`openspec/changes/<nome>/\` com o schema selecionado.
1016
+
1017
+ 4. **Mostre o status dos artifacts**
1018
+ \`\`\`bash
1019
+ openspec status --change "<nome>"
1020
+ \`\`\`
1021
+ Isso mostra quais artifacts precisam ser criados e quais estão prontos (dependências satisfeitas).
1022
+
1023
+ 5. **Obtenha instruções para o primeiro artifact**
1024
+ O primeiro artifact depende do schema (por exemplo, \`proposal\` para spec-driven).
1025
+ Verifique a saída do status para encontrar o primeiro artifact com status "ready".
1026
+ \`\`\`bash
1027
+ openspec instructions <primeiro-artifact-id> --change "<nome>"
1028
+ \`\`\`
1029
+ Isso produz o template e contexto para criar o primeiro artifact.
1030
+
1031
+ 6. **PARE e aguarde direção do usuário**
1032
+
1033
+ **Saída**
1034
+
1035
+ Após completar os passos, resuma:
1036
+ - Nome da change e localização
1037
+ - Schema/workflow sendo usado e sua sequência de artifacts
1038
+ - Status atual (0/N artifacts completos)
1039
+ - O template para o primeiro artifact
1040
+ - Prompt: "Pronto para criar o primeiro artifact? Basta descrever do que se trata esta change e eu elaboro um rascunho, ou peça-me para continuar."
1041
+
1042
+ **Guardrails**
1043
+ - NÃO crie nenhum artifact ainda - apenas mostre as instruções
1044
+ - NÃO avance além de mostrar o template do primeiro artifact
1045
+ - Se o nome for inválido (não kebab-case), peça um nome válido
1046
+ - Se uma change com aquele nome já existir, sugira continuar aquela change em vez disso
1015
1047
  - Passe --schema se estiver usando um workflow não padrão`,
1016
1048
  skillCompatibility: 'Requer openspec CLI.',
1017
1049
  opsxDescription: 'Inicie uma nova change usando o workflow experimental de artifacts (OPSX)',
1018
- opsxContent: `Inicie uma nova change usando a abordagem experimental orientada a artifacts.
1019
-
1020
- **Entrada**: O argumento após \`/opsx:new\` é o nome da change (kebab-case), OU uma descrição do que o usuário quer construir.
1021
-
1022
- **Passos**
1023
-
1024
- 1. **Se nenhuma entrada for fornecida, pergunte o que ele quer construir**
1025
-
1026
- Use a ferramenta **AskUserQuestion** (aberta, sem opções pré-definidas) para perguntar:
1027
- > "Em qual change você quer trabalhar? Descreva o que quer construir ou corrigir."
1028
-
1029
- A partir da descrição dele, derive um nome kebab-case (por exemplo, "adicionar autenticação de usuário" → \`add-user-auth\`).
1030
-
1031
- **IMPORTANTE**: NÃO prossiga sem entender o que o usuário quer construir.
1032
-
1033
- 2. **Determine o schema de workflow**
1034
-
1035
- Use o schema padrão (omitir \`--schema\`) a menos que o usuário solicite explicitamente um workflow diferente.
1036
-
1037
- **Use um schema diferente apenas se o usuário mencionar:**
1038
- - Um nome de schema específico → use \`--schema <nome>\`
1039
- - "mostrar workflows" ou "quais workflows" → execute \`openspec schemas --json\` e deixe-o escolher
1040
-
1041
- **Caso contrário**: Omita \`--schema\` para usar o padrão.
1042
-
1043
- 3. **Crie o diretório da change**
1044
- \`\`\`bash
1045
- openspec new change "<nome>"
1046
- \`\`\`
1047
- Adicione \`--schema <nome>\` apenas se o usuário solicitou um workflow específico.
1048
- Isso cria uma change com scaffold em \`openspec/changes/<nome>/\` com o schema selecionado.
1049
-
1050
- 4. **Mostre o status dos artifacts**
1051
- \`\`\`bash
1052
- openspec status --change "<nome>"
1053
- \`\`\`
1054
- Isso mostra quais artifacts precisam ser criados e quais estão prontos (dependências satisfeitas).
1055
-
1056
- 5. **Obtenha instruções para o primeiro artifact**
1057
- O primeiro artifact depende do schema. Verifique a saída do status para encontrar o primeiro artifact com status "ready".
1058
- \`\`\`bash
1059
- openspec instructions <primeiro-artifact-id> --change "<nome>"
1060
- \`\`\`
1061
- Isso produz o template e contexto para criar o primeiro artifact.
1062
-
1063
- 6. **PARE e aguarde direção do usuário**
1064
-
1065
- **Saída**
1066
-
1067
- Após completar os passos, resuma:
1068
- - Nome da change e localização
1069
- - Schema/workflow sendo usado e sua sequência de artifacts
1070
- - Status atual (0/N artifacts completos)
1071
- - O template para o primeiro artifact
1072
- - Prompt: "Pronto para criar o primeiro artifact? Execute \`/opsx:continue\` ou apenas descreva do que se trata esta change e eu elaboro um rascunho."
1073
-
1074
- **Guardrails**
1075
- - NÃO crie nenhum artifact ainda - apenas mostre as instruções
1076
- - NÃO avance além de mostrar o template do primeiro artifact
1077
- - Se o nome for inválido (não kebab-case), peça um nome válido
1078
- - Se uma change com aquele nome já existir, sugira usar \`/opsx:continue\` em vez disso
1050
+ opsxContent: `Inicie uma nova change usando a abordagem experimental orientada a artifacts.
1051
+
1052
+ **Entrada**: O argumento após \`/opsx:new\` é o nome da change (kebab-case), OU uma descrição do que o usuário quer construir.
1053
+
1054
+ **Passos**
1055
+
1056
+ 1. **Se nenhuma entrada for fornecida, pergunte o que ele quer construir**
1057
+
1058
+ Use a ferramenta **AskUserQuestion** (aberta, sem opções pré-definidas) para perguntar:
1059
+ > "Em qual change você quer trabalhar? Descreva o que quer construir ou corrigir."
1060
+
1061
+ A partir da descrição dele, derive um nome kebab-case (por exemplo, "adicionar autenticação de usuário" → \`add-user-auth\`).
1062
+
1063
+ **IMPORTANTE**: NÃO prossiga sem entender o que o usuário quer construir.
1064
+
1065
+ 2. **Determine o schema de workflow**
1066
+
1067
+ Use o schema padrão (omitir \`--schema\`) a menos que o usuário solicite explicitamente um workflow diferente.
1068
+
1069
+ **Use um schema diferente apenas se o usuário mencionar:**
1070
+ - Um nome de schema específico → use \`--schema <nome>\`
1071
+ - "mostrar workflows" ou "quais workflows" → execute \`openspec schemas --json\` e deixe-o escolher
1072
+
1073
+ **Caso contrário**: Omita \`--schema\` para usar o padrão.
1074
+
1075
+ 3. **Crie o diretório da change**
1076
+ \`\`\`bash
1077
+ openspec new change "<nome>"
1078
+ \`\`\`
1079
+ Adicione \`--schema <nome>\` apenas se o usuário solicitou um workflow específico.
1080
+ Isso cria uma change com scaffold em \`openspec/changes/<nome>/\` com o schema selecionado.
1081
+
1082
+ 4. **Mostre o status dos artifacts**
1083
+ \`\`\`bash
1084
+ openspec status --change "<nome>"
1085
+ \`\`\`
1086
+ Isso mostra quais artifacts precisam ser criados e quais estão prontos (dependências satisfeitas).
1087
+
1088
+ 5. **Obtenha instruções para o primeiro artifact**
1089
+ O primeiro artifact depende do schema. Verifique a saída do status para encontrar o primeiro artifact com status "ready".
1090
+ \`\`\`bash
1091
+ openspec instructions <primeiro-artifact-id> --change "<nome>"
1092
+ \`\`\`
1093
+ Isso produz o template e contexto para criar o primeiro artifact.
1094
+
1095
+ 6. **PARE e aguarde direção do usuário**
1096
+
1097
+ **Saída**
1098
+
1099
+ Após completar os passos, resuma:
1100
+ - Nome da change e localização
1101
+ - Schema/workflow sendo usado e sua sequência de artifacts
1102
+ - Status atual (0/N artifacts completos)
1103
+ - O template para o primeiro artifact
1104
+ - Prompt: "Pronto para criar o primeiro artifact? Execute \`/opsx:continue\` ou apenas descreva do que se trata esta change e eu elaboro um rascunho."
1105
+
1106
+ **Guardrails**
1107
+ - NÃO crie nenhum artifact ainda - apenas mostre as instruções
1108
+ - NÃO avance além de mostrar o template do primeiro artifact
1109
+ - Se o nome for inválido (não kebab-case), peça um nome válido
1110
+ - Se uma change com aquele nome já existir, sugira usar \`/opsx:continue\` em vez disso
1079
1111
  - Passe --schema se estiver usando um workflow não padrão`,
1080
1112
  };
1081
1113
  // ═══════════════════════════════════════════════════════════
@@ -1085,548 +1117,548 @@ export const ONBOARD_TEMPLATE_MESSAGES = {
1085
1117
  skillDescription: 'Onboarding guiado para o BR-OpenSpec - percorra um ciclo completo de workflow com narração e trabalho real na codebase.',
1086
1118
  skillCompatibility: 'Requer openspec CLI.',
1087
1119
  opsxDescription: 'Onboarding guiado - percorra um ciclo completo de workflow do BR-OpenSpec com narração',
1088
- instructions: `Guie o usuário através de seu primeiro ciclo completo de workflow do BR-OpenSpec. Esta é uma experiência de ensino - você fará trabalho real na codebase dele enquanto explica cada passo.
1089
-
1090
- ---
1091
-
1092
- ## Pré-voo
1093
-
1094
- Antes de começar, verifique se o CLI do BR-OpenSpec está instalado:
1095
-
1096
- \`\`\`bash
1097
- # Unix/macOS
1098
- openspec --version 2>&1 || echo "CLI_NOT_INSTALLED"
1099
- # Windows (PowerShell)
1100
- # if (Get-Command openspec -ErrorAction SilentlyContinue) { openspec --version } else { echo "CLI_NOT_INSTALLED" }
1101
- \`\`\`
1102
-
1103
- **Se o CLI não estiver instalado:**
1104
- > O CLI do BR-OpenSpec não está instalado. Instale-o primeiro, depois volte para \`/opsx:onboard\`.
1105
-
1106
- Pare aqui se não estiver instalado.
1107
-
1108
- ---
1109
-
1110
- ## Fase 1: Boas-vindas
1111
-
1112
- Exiba:
1113
-
1114
- \`\`\`
1115
- ## Bem-vindo ao BR-OpenSpec!
1116
-
1117
- Eu vou te guiar através de um ciclo completo de change - da ideia à implementação - usando uma tarefa real na sua codebase. Ao longo do caminho, você aprenderá o workflow fazendo.
1118
-
1119
- **O que faremos:**
1120
- 1. Escolher uma tarefa pequena e real na sua codebase
1121
- 2. Explorar o problema brevemente
1122
- 3. Criar uma change (o container para nosso trabalho)
1123
- 4. Construir os artifacts: proposal → specs → design → tasks
1124
- 5. Implementar as tarefas
1125
- 6. Arquivar a change concluída
1126
-
1127
- **Tempo:** ~15-20 minutos
1128
-
1129
- Vamos começar encontrando algo para trabalhar.
1130
- \`\`\`
1131
-
1132
- ---
1133
-
1134
- ## Fase 2: Seleção de Tarefa
1135
-
1136
- ### Análise da Codebase
1137
-
1138
- Escaneie a codebase em busca de pequenas oportunidades de melhoria. Procure por:
1139
-
1140
- 1. **Comentários TODO/FIXME** - Pesquise por \`TODO\`, \`FIXME\`, \`HACK\`, \`XXX\` em arquivos de código
1141
- 2. **Tratamento de erros ausente** - Blocos \`catch\` que engolem erros, operações arriscadas sem try-catch
1142
- 3. **Funções sem testes** - Relacione \`src/\` com diretórios de teste
1143
- 4. **Problemas de tipos** - Tipos \`any\` em arquivos TypeScript (\`: any\`, \`as any\`)
1144
- 5. **Artifacts de debug** - Declarações \`console.log\`, \`console.debug\`, \`debugger\` em código não-debug
1145
- 6. **Validação ausente** - Handlers de entrada de usuário sem validação
1146
-
1147
- Verifique também a atividade recente do git:
1148
- \`\`\`bash
1149
- # Unix/macOS
1150
- git log --oneline -10 2>/dev/null || echo "Sem histórico git"
1151
- # Windows (PowerShell)
1152
- # git log --oneline -10 2>$null; if ($LASTEXITCODE -ne 0) { echo "Sem histórico git" }
1153
- \`\`\`
1154
-
1155
- ### Apresente Sugestões
1156
-
1157
- A partir da sua análise, apresente 3-4 sugestões específicas:
1158
-
1159
- \`\`\`
1160
- ## Sugestões de Tarefas
1161
-
1162
- Com base no escaneamento da sua codebase, aqui estão algumas boas tarefas iniciais:
1163
-
1164
- **1. [Tarefa mais promissora]**
1165
- Local: \`src/caminho/para/arquivo.ts:42\`
1166
- Escopo: ~1-2 arquivos, ~20-30 linhas
1167
- Por que é boa: [breve razão]
1168
-
1169
- **2. [Segunda tarefa]**
1170
- Local: \`src/outro/arquivo.ts\`
1171
- Escopo: ~1 arquivo, ~15 linhas
1172
- Por que é boa: [breve razão]
1173
-
1174
- **3. [Terceira tarefa]**
1175
- Local: [local]
1176
- Escopo: [estimativa]
1177
- Por que é boa: [breve razão]
1178
-
1179
- **4. Outra coisa?**
1180
- Me diga no que você gostaria de trabalhar.
1181
-
1182
- Qual tarefa te interessa? (Escolha um número ou descreva a sua)
1183
- \`\`\`
1184
-
1185
- **Se nada for encontrado:** Volte a perguntar o que o usuário quer construir:
1186
- > Não encontrei vitórias rápidas óbvias na sua codebase. Qual é algo pequeno que você vem querendo adicionar ou corrigir?
1187
-
1188
- ### Guardrail de Escopo
1189
-
1190
- Se o usuário escolher ou descrever algo muito grande (funcionalidade principal, trabalho de vários dias):
1191
-
1192
- \`\`\`
1193
- Essa é uma tarefa valiosa, mas provavelmente maior do que o ideal para sua primeira execução do BR-OpenSpec.
1194
-
1195
- Para aprender o workflow, menor é melhor - permite ver o ciclo completo sem ficar preso em detalhes de implementação.
1196
-
1197
- **Opções:**
1198
- 1. **Fatiar menor** - Qual é a menor peça útil de [tarefa dele]? Talvez apenas [fatia específica]?
1199
- 2. **Escolher outra coisa** - Uma das outras sugestões, ou uma tarefa pequena diferente?
1200
- 3. **Fazer assim mesmo** - Se você realmente quiser encarar isso, podemos. Só saiba que vai demorar mais.
1201
-
1202
- O que você prefere?
1203
- \`\`\`
1204
-
1205
- Deixe o usuário sobrepor se insistir - este é um guardrail suave.
1206
-
1207
- ---
1208
-
1209
- ## Fase 3: Demonstração do Explore
1210
-
1211
- Uma vez que uma tarefa seja selecionada, demonstre brevemente o modo explore:
1212
-
1213
- \`\`\`
1214
- Antes de criarmos uma change, deixe-me rapidamente te mostrar o **modo explore** - é como você pensa sobre problemas antes de se comprometer com uma direção.
1215
- \`\`\`
1216
-
1217
- Gaste 1-2 minutos investigando o código relevante:
1218
- - Leia o(s) arquivo(s) envolvido(s)
1219
- - Desenhe um diagrama ASCII rápido se ajudar
1220
- - Note quaisquer considerações
1221
-
1222
- \`\`\`
1223
- ## Exploração Rápida
1224
-
1225
- [Sua breve análise - o que você encontrou, quaisquer considerações]
1226
-
1227
- ┌─────────────────────────────────────────┐
1228
- │ [Opcional: diagrama ASCII se útil] │
1229
- └─────────────────────────────────────────┘
1230
-
1231
- O modo explore (\`/opsx:explore\`) é para esse tipo de pensamento - investigar antes de implementar. Você pode usá-lo a qualquer momento que precisar pensar sobre um problema.
1232
-
1233
- Agora vamos criar uma change para conter nosso trabalho.
1234
- \`\`\`
1235
-
1236
- **PAUSA** - Aguarde confirmação do usuário antes de prosseguir.
1237
-
1238
- ---
1239
-
1240
- ## Fase 4: Criar a Change
1241
-
1242
- **EXPLIQUE:**
1243
- \`\`\`
1244
- ## Criando uma Change
1245
-
1246
- Uma "change" no BR-OpenSpec é um container para todo o pensamento e planejamento em torno de uma peça de trabalho. Ela fica em \`openspec/changes/<nome>/\` e armazena seus artifacts - proposal, specs, design, tasks.
1247
-
1248
- Deixe-me criar uma para nossa tarefa.
1249
- \`\`\`
1250
-
1251
- **FAÇA:** Crie a change com um nome kebab-case derivado:
1252
- \`\`\`bash
1253
- openspec new change "<nome-derivado>"
1254
- \`\`\`
1255
-
1256
- **MOSTRE:**
1257
- \`\`\`
1258
- Criado: \`openspec/changes/<nome>/\`
1259
-
1260
- A estrutura de pastas:
1261
- \`\`\`
1262
- openspec/changes/<nome>/
1263
- ├── proposal.md ← Por que estamos fazendo isso (vazio, vamos preencher)
1264
- ├── design.md ← Como vamos construir (vazio)
1265
- ├── specs/ ← Requisitos detalhados (vazio)
1266
- └── tasks.md ← Checklist de implementação (vazio)
1267
- \`\`\`
1268
-
1269
- Agora vamos preencher o primeiro artifact - a proposal.
1270
- \`\`\`
1271
-
1272
- ---
1273
-
1274
- ## Fase 5: Proposal
1275
-
1276
- **EXPLIQUE:**
1277
- \`\`\`
1278
- ## A Proposal
1279
-
1280
- A proposal captura **por que** estamos fazendo esta change e **o que** ela envolve em alto nível. É o "pitch de elevador" para o trabalho.
1281
-
1282
- Vou elaborar uma com base na nossa tarefa.
1283
- \`\`\`
1284
-
1285
- **FAÇA:** Elabore o conteúdo da proposal (ainda não salve):
1286
-
1287
- \`\`\`
1288
- Aqui está um rascunho de proposal:
1289
-
1290
- ---
1291
-
1292
- ## Por Que
1293
-
1294
- [1-2 frases explicando o problema/oportunidade]
1295
-
1296
- ## O Que Muda
1297
-
1298
- [Bullet points do que será diferente]
1299
-
1300
- ## Capabilities
1301
-
1302
- ### Novas Capabilities
1303
- - \`<nome-capability>\`: [breve descrição]
1304
-
1305
- ### Capabilities Modificadas
1306
- <!-- Se modificar comportamento existente -->
1307
-
1308
- ## Impacto
1309
-
1310
- - \`src/caminho/para/arquivo.ts\`: [o que muda]
1311
- - [outros arquivos se aplicável]
1312
-
1313
- ---
1314
-
1315
- Isso captura a intenção? Posso ajustar antes de salvá-la.
1316
- \`\`\`
1317
-
1318
- **PAUSA** - Aguarde aprovação/feedback do usuário.
1319
-
1320
- Após aprovação, salve a proposal:
1321
- \`\`\`bash
1322
- openspec instructions proposal --change "<nome>" --json
1323
- \`\`\`
1324
- Depois escreva o conteúdo em \`openspec/changes/<nome>/proposal.md\`.
1325
-
1326
- \`\`\`
1327
- Proposal salva. Este é seu documento de "por que" - você sempre pode voltar e refiná-lo à medida que o entendimento evolui.
1328
-
1329
- Próximo: specs.
1330
- \`\`\`
1331
-
1332
- ---
1333
-
1334
- ## Fase 6: Specs
1335
-
1336
- **EXPLIQUE:**
1337
- \`\`\`
1338
- ## Specs
1339
-
1340
- Os specs definem **o que** estamos construindo em termos precisos e testáveis. Eles usam um formato de requisito/cenário que torna o comportamento esperado cristalino.
1341
-
1342
- Para uma tarefa pequena como esta, talvez precisemos apenas de um arquivo spec.
1343
- \`\`\`
1344
-
1345
- **FAÇA:** Crie o arquivo spec:
1346
- \`\`\`bash
1347
- # Unix/macOS
1348
- mkdir -p openspec/changes/<nome>/specs/<nome-capability>
1349
- # Windows (PowerShell)
1350
- # New-Item -ItemType Directory -Force -Path "openspec/changes/<nome>/specs/<nome-capability>"
1351
- \`\`\`
1352
-
1353
- Elabore o conteúdo do spec:
1354
-
1355
- \`\`\`
1356
- Aqui está o spec:
1357
-
1358
- ---
1359
-
1360
- ## Requisitos ADICIONADOS
1361
-
1362
- ### Requisito: <Nome>
1363
-
1364
- <Descrição do que o sistema deve fazer>
1365
-
1366
- #### Cenário: <Nome do cenário>
1367
-
1368
- - **QUANDO** <condição de gatilho>
1369
- - **ENTÃO** <resultado esperado>
1370
- - **E** <resultado adicional se necessário>
1371
-
1372
- ---
1373
-
1374
- Este formato - QUANDO/ENTÃO/E - torna os requisitos testáveis. Você pode literalmente lê-los como casos de teste.
1375
- \`\`\`
1376
-
1377
- Salve em \`openspec/changes/<nome>/specs/<capability>/spec.md\`.
1378
-
1379
- ---
1380
-
1381
- ## Fase 7: Design
1382
-
1383
- **EXPLIQUE:**
1384
- \`\`\`
1385
- ## Design
1386
-
1387
- O design captura **como** vamos construir - decisões técnicas, tradeoffs, abordagem.
1388
-
1389
- Para changes pequenas, isto pode ser breve. Tudo bem - nem toda change precisa de discussão profunda de design.
1390
- \`\`\`
1391
-
1392
- **FAÇA:** Elabore design.md:
1393
-
1394
- \`\`\`
1395
- Aqui está o design:
1396
-
1397
- ---
1398
-
1399
- ## Contexto
1400
-
1401
- [Contexto breve sobre o estado atual]
1402
-
1403
- ## Objetivos / Não-Objetivos
1404
-
1405
- **Objetivos:**
1406
- - [O que estamos tentando alcançar]
1407
-
1408
- **Não-Objetivos:**
1409
- - [O que está explicitamente fora do escopo]
1410
-
1411
- ## Decisões
1412
-
1413
- ### Decisão 1: [Decisão-chave]
1414
-
1415
- [Explicação da abordagem e racional]
1416
-
1417
- ---
1418
-
1419
- Para uma tarefa pequena, isto captura as decisões-chave sem over-engineering.
1420
- \`\`\`
1421
-
1422
- Salve em \`openspec/changes/<nome>/design.md\`.
1423
-
1424
- ---
1425
-
1426
- ## Fase 8: Tasks
1427
-
1428
- **EXPLIQUE:**
1429
- \`\`\`
1430
- ## Tasks
1431
-
1432
- Finalmente, quebramos o trabalho em tarefas de implementação - checkboxes que impulsionam a fase de apply.
1433
-
1434
- Elas devem ser pequenas, claras e em ordem lógica.
1435
- \`\`\`
1436
-
1437
- **FAÇA:** Gere tarefas baseadas nos specs e design:
1438
-
1439
- \`\`\`
1440
- Aqui estão as tarefas de implementação:
1441
-
1442
- ---
1443
-
1444
- ## 1. [Categoria ou arquivo]
1445
-
1446
- - [ ] 1.1 [Tarefa específica]
1447
- - [ ] 1.2 [Tarefa específica]
1448
-
1449
- ## 2. Verificar
1450
-
1451
- - [ ] 2.1 [Etapa de verificação]
1452
-
1453
- ---
1454
-
1455
- Cada checkbox se torna uma unidade de trabalho na fase de apply. Pronto para implementar?
1456
- \`\`\`
1457
-
1458
- **PAUSA** - Aguarde o usuário confirmar que está pronto para implementar.
1459
-
1460
- Salve em \`openspec/changes/<nome>/tasks.md\`.
1461
-
1462
- ---
1463
-
1464
- ## Fase 9: Apply (Implementação)
1465
-
1466
- **EXPLIQUE:**
1467
- \`\`\`
1468
- ## Implementação
1469
-
1470
- Agora implementamos cada tarefa, marcando-as à medida que avançamos. Anunciarei cada uma e ocasionalmente notarei como os specs/design informaram a abordagem.
1471
- \`\`\`
1472
-
1473
- **FAÇA:** Para cada tarefa:
1474
-
1475
- 1. Anuncie: "Trabalhando na tarefa N: [descrição]"
1476
- 2. Implemente a mudança na codebase
1477
- 3. Referencie specs/design naturalmente: "O spec diz X, então estou fazendo Y"
1478
- 4. Marque como concluída em tasks.md: \`- [ ]\` → \`- [x]\`
1479
- 5. Breve status: "✓ Tarefa N concluída"
1480
-
1481
- Mantenha a narração leve - não explique cada linha de código.
1482
-
1483
- Após todas as tarefas:
1484
-
1485
- \`\`\`
1486
- ## Implementação Concluída
1487
-
1488
- Todas as tarefas concluídas:
1489
- - [x] Tarefa 1
1490
- - [x] Tarefa 2
1491
- - [x] ...
1492
-
1493
- A change está implementada! Mais um passo - vamos arquivá-la.
1494
- \`\`\`
1495
-
1496
- ---
1497
-
1498
- ## Fase 10: Archive
1499
-
1500
- **EXPLIQUE:**
1501
- \`\`\`
1502
- ## Arquivamento
1503
-
1504
- Quando uma change está completa, nós a arquivamos. Isso a move de \`openspec/changes/\` para \`openspec/changes/archive/YYYY-MM-DD-<nome>/\`.
1505
-
1506
- As changes arquivadas se tornam o histórico de decisões do seu projeto - você sempre pode encontrá-las depois para entender por que algo foi construído de certa forma.
1507
- \`\`\`
1508
-
1509
- **FAÇA:**
1510
- \`\`\`bash
1511
- openspec archive "<nome>"
1512
- \`\`\`
1513
-
1514
- **MOSTRE:**
1515
- \`\`\`
1516
- Arquivado em: \`openspec/changes/archive/YYYY-MM-DD-<nome>/\`
1517
-
1518
- A change agora faz parte do histórico do seu projeto. O código está na sua codebase, o registro de decisão está preservado.
1519
- \`\`\`
1520
-
1521
- ---
1522
-
1523
- ## Fase 11: Recapitulação e Próximos Passos
1524
-
1525
- \`\`\`
1526
- ## Parabéns!
1527
-
1528
- Você acabou de completar um ciclo completo do BR-OpenSpec:
1529
-
1530
- 1. **Explore** - Pensou sobre o problema
1531
- 2. **New** - Criou um container de change
1532
- 3. **Proposal** - Capturou POR QUE
1533
- 4. **Specs** - Definiu O QUE em detalhes
1534
- 5. **Design** - Decidiu COMO
1535
- 6. **Tasks** - Quebrou em passos
1536
- 7. **Apply** - Implementou o trabalho
1537
- 8. **Archive** - Preservou o registro
1538
-
1539
- Este mesmo ritmo funciona para qualquer tamanho de change - uma pequena correção ou uma funcionalidade principal.
1540
-
1541
- ---
1542
-
1543
- ## Referência de Comandos
1544
-
1545
- **Workflow principal:**
1546
-
1547
- | Comando | O que faz |
1548
- |-------------------|---------------------------------------------|
1549
- | \`/opsx:propose\` | Cria uma change e gera todos os artifacts |
1550
- | \`/opsx:explore\` | Pensa sobre problemas antes/durante o trabalho |
1551
- | \`/opsx:apply\` | Implementa tarefas de uma change |
1552
- | \`/opsx:archive\` | Arquiva uma change concluída |
1553
-
1554
- **Comandos adicionais:**
1555
-
1556
- | Comando | O que faz |
1557
- |--------------------|--------------------------------------------------------|
1558
- | \`/opsx:new\` | Inicia uma nova change, passo a passo pelos artifacts |
1559
- | \`/opsx:continue\` | Continua trabalhando em uma change existente |
1560
- | \`/opsx:ff\` | Fast-forward: cria todos os artifacts de uma vez |
1561
- | \`/opsx:verify\` | Verifica se implementação corresponde aos artifacts |
1562
-
1563
- ---
1564
-
1565
- ## E Agora?
1566
-
1567
- Experimente \`/opsx:propose\` em algo que você realmente quer construir. Você já pegou o ritmo!
1568
- \`\`\`
1569
-
1570
- ---
1571
-
1572
- ## Tratamento de Saída Graciosa
1573
-
1574
- ### Usuário quer parar no meio do caminho
1575
-
1576
- Se o usuário disser que precisa parar, quer pausar, ou parecer desengajado:
1577
-
1578
- \`\`\`
1579
- Sem problema! Sua change está salva em \`openspec/changes/<nome>/\`.
1580
-
1581
- Para retomar de onde paramos depois:
1582
- - \`/opsx:continue <nome>\` - Retoma a criação de artifacts
1583
- - \`/opsx:apply <nome>\` - Pula para implementação (se tasks existirem)
1584
-
1585
- O trabalho não será perdido. Volte quando estiver pronto.
1586
- \`\`\`
1587
-
1588
- Saia graciosamente sem pressão.
1589
-
1590
- ### Usuário apenas quer a referência de comandos
1591
-
1592
- Se o usuário disser que apenas quer ver os comandos ou pular o tutorial:
1593
-
1594
- \`\`\`
1595
- ## Referência Rápida do BR-OpenSpec
1596
-
1597
- **Workflow principal:**
1598
-
1599
- | Comando | O que faz |
1600
- |--------------------------|---------------------------------------------|
1601
- | \`/opsx:propose <nome>\` | Cria uma change e gera todos os artifacts |
1602
- | \`/opsx:explore\` | Pensa sobre problemas (sem mudanças de código) |
1603
- | \`/opsx:apply <nome>\` | Implementa tarefas |
1604
- | \`/opsx:archive <nome>\` | Arquiva quando concluído |
1605
-
1606
- **Comandos adicionais:**
1607
-
1608
- | Comando | O que faz |
1609
- |---------------------------|----------------------------------|
1610
- | \`/opsx:new <nome>\` | Inicia uma nova change, passo a passo |
1611
- | \`/opsx:continue <nome>\` | Continua uma change existente |
1612
- | \`/opsx:ff <nome>\` | Fast-forward: todos os artifacts de uma vez |
1613
- | \`/opsx:verify <nome>\` | Verifica implementação |
1614
-
1615
- Experimente \`/opsx:propose\` para iniciar sua primeira change.
1616
- \`\`\`
1617
-
1618
- Saia graciosamente.
1619
-
1620
- ---
1621
-
1622
- ## Guardrails
1623
-
1624
- - **Siga o padrão EXPLICAR → FAZER → MOSTRAR → PAUSA** nas transições-chave (após explore, após rascunho de proposal, após tasks, após archive)
1625
- - **Mantenha a narração leve** durante a implementação - ensine sem pregar
1626
- - **Não pule fases** mesmo se a change for pequena - o objetivo é ensinar o workflow
1627
- - **Pause para confirmação** nos pontos marcados, mas não exagere nas pausas
1628
- - **Trate saídas graciosamente** - nunca pressione o usuário a continuar
1629
- - **Use tarefas reais da codebase** - não simule ou use exemplos falsos
1120
+ instructions: `Guie o usuário através de seu primeiro ciclo completo de workflow do BR-OpenSpec. Esta é uma experiência de ensino - você fará trabalho real na codebase dele enquanto explica cada passo.
1121
+
1122
+ ---
1123
+
1124
+ ## Pré-voo
1125
+
1126
+ Antes de começar, verifique se o CLI do BR-OpenSpec está instalado:
1127
+
1128
+ \`\`\`bash
1129
+ # Unix/macOS
1130
+ openspec --version 2>&1 || echo "CLI_NOT_INSTALLED"
1131
+ # Windows (PowerShell)
1132
+ # if (Get-Command openspec -ErrorAction SilentlyContinue) { openspec --version } else { echo "CLI_NOT_INSTALLED" }
1133
+ \`\`\`
1134
+
1135
+ **Se o CLI não estiver instalado:**
1136
+ > O CLI do BR-OpenSpec não está instalado. Instale-o primeiro, depois volte para \`/opsx:onboard\`.
1137
+
1138
+ Pare aqui se não estiver instalado.
1139
+
1140
+ ---
1141
+
1142
+ ## Fase 1: Boas-vindas
1143
+
1144
+ Exiba:
1145
+
1146
+ \`\`\`
1147
+ ## Bem-vindo ao BR-OpenSpec!
1148
+
1149
+ Eu vou te guiar através de um ciclo completo de change - da ideia à implementação - usando uma tarefa real na sua codebase. Ao longo do caminho, você aprenderá o workflow fazendo.
1150
+
1151
+ **O que faremos:**
1152
+ 1. Escolher uma tarefa pequena e real na sua codebase
1153
+ 2. Explorar o problema brevemente
1154
+ 3. Criar uma change (o container para nosso trabalho)
1155
+ 4. Construir os artifacts: proposal → specs → design → tasks
1156
+ 5. Implementar as tarefas
1157
+ 6. Arquivar a change concluída
1158
+
1159
+ **Tempo:** ~15-20 minutos
1160
+
1161
+ Vamos começar encontrando algo para trabalhar.
1162
+ \`\`\`
1163
+
1164
+ ---
1165
+
1166
+ ## Fase 2: Seleção de Tarefa
1167
+
1168
+ ### Análise da Codebase
1169
+
1170
+ Escaneie a codebase em busca de pequenas oportunidades de melhoria. Procure por:
1171
+
1172
+ 1. **Comentários TODO/FIXME** - Pesquise por \`TODO\`, \`FIXME\`, \`HACK\`, \`XXX\` em arquivos de código
1173
+ 2. **Tratamento de erros ausente** - Blocos \`catch\` que engolem erros, operações arriscadas sem try-catch
1174
+ 3. **Funções sem testes** - Relacione \`src/\` com diretórios de teste
1175
+ 4. **Problemas de tipos** - Tipos \`any\` em arquivos TypeScript (\`: any\`, \`as any\`)
1176
+ 5. **Artifacts de debug** - Declarações \`console.log\`, \`console.debug\`, \`debugger\` em código não-debug
1177
+ 6. **Validação ausente** - Handlers de entrada de usuário sem validação
1178
+
1179
+ Verifique também a atividade recente do git:
1180
+ \`\`\`bash
1181
+ # Unix/macOS
1182
+ git log --oneline -10 2>/dev/null || echo "Sem histórico git"
1183
+ # Windows (PowerShell)
1184
+ # git log --oneline -10 2>$null; if ($LASTEXITCODE -ne 0) { echo "Sem histórico git" }
1185
+ \`\`\`
1186
+
1187
+ ### Apresente Sugestões
1188
+
1189
+ A partir da sua análise, apresente 3-4 sugestões específicas:
1190
+
1191
+ \`\`\`
1192
+ ## Sugestões de Tarefas
1193
+
1194
+ Com base no escaneamento da sua codebase, aqui estão algumas boas tarefas iniciais:
1195
+
1196
+ **1. [Tarefa mais promissora]**
1197
+ Local: \`src/caminho/para/arquivo.ts:42\`
1198
+ Escopo: ~1-2 arquivos, ~20-30 linhas
1199
+ Por que é boa: [breve razão]
1200
+
1201
+ **2. [Segunda tarefa]**
1202
+ Local: \`src/outro/arquivo.ts\`
1203
+ Escopo: ~1 arquivo, ~15 linhas
1204
+ Por que é boa: [breve razão]
1205
+
1206
+ **3. [Terceira tarefa]**
1207
+ Local: [local]
1208
+ Escopo: [estimativa]
1209
+ Por que é boa: [breve razão]
1210
+
1211
+ **4. Outra coisa?**
1212
+ Me diga no que você gostaria de trabalhar.
1213
+
1214
+ Qual tarefa te interessa? (Escolha um número ou descreva a sua)
1215
+ \`\`\`
1216
+
1217
+ **Se nada for encontrado:** Volte a perguntar o que o usuário quer construir:
1218
+ > Não encontrei vitórias rápidas óbvias na sua codebase. Qual é algo pequeno que você vem querendo adicionar ou corrigir?
1219
+
1220
+ ### Guardrail de Escopo
1221
+
1222
+ Se o usuário escolher ou descrever algo muito grande (funcionalidade principal, trabalho de vários dias):
1223
+
1224
+ \`\`\`
1225
+ Essa é uma tarefa valiosa, mas provavelmente maior do que o ideal para sua primeira execução do BR-OpenSpec.
1226
+
1227
+ Para aprender o workflow, menor é melhor - permite ver o ciclo completo sem ficar preso em detalhes de implementação.
1228
+
1229
+ **Opções:**
1230
+ 1. **Fatiar menor** - Qual é a menor peça útil de [tarefa dele]? Talvez apenas [fatia específica]?
1231
+ 2. **Escolher outra coisa** - Uma das outras sugestões, ou uma tarefa pequena diferente?
1232
+ 3. **Fazer assim mesmo** - Se você realmente quiser encarar isso, podemos. Só saiba que vai demorar mais.
1233
+
1234
+ O que você prefere?
1235
+ \`\`\`
1236
+
1237
+ Deixe o usuário sobrepor se insistir - este é um guardrail suave.
1238
+
1239
+ ---
1240
+
1241
+ ## Fase 3: Demonstração do Explore
1242
+
1243
+ Uma vez que uma tarefa seja selecionada, demonstre brevemente o modo explore:
1244
+
1245
+ \`\`\`
1246
+ Antes de criarmos uma change, deixe-me rapidamente te mostrar o **modo explore** - é como você pensa sobre problemas antes de se comprometer com uma direção.
1247
+ \`\`\`
1248
+
1249
+ Gaste 1-2 minutos investigando o código relevante:
1250
+ - Leia o(s) arquivo(s) envolvido(s)
1251
+ - Desenhe um diagrama ASCII rápido se ajudar
1252
+ - Note quaisquer considerações
1253
+
1254
+ \`\`\`
1255
+ ## Exploração Rápida
1256
+
1257
+ [Sua breve análise - o que você encontrou, quaisquer considerações]
1258
+
1259
+ ┌─────────────────────────────────────────┐
1260
+ │ [Opcional: diagrama ASCII se útil] │
1261
+ └─────────────────────────────────────────┘
1262
+
1263
+ O modo explore (\`/opsx:explore\`) é para esse tipo de pensamento - investigar antes de implementar. Você pode usá-lo a qualquer momento que precisar pensar sobre um problema.
1264
+
1265
+ Agora vamos criar uma change para conter nosso trabalho.
1266
+ \`\`\`
1267
+
1268
+ **PAUSA** - Aguarde confirmação do usuário antes de prosseguir.
1269
+
1270
+ ---
1271
+
1272
+ ## Fase 4: Criar a Change
1273
+
1274
+ **EXPLIQUE:**
1275
+ \`\`\`
1276
+ ## Criando uma Change
1277
+
1278
+ Uma "change" no BR-OpenSpec é um container para todo o pensamento e planejamento em torno de uma peça de trabalho. Ela fica em \`openspec/changes/<nome>/\` e armazena seus artifacts - proposal, specs, design, tasks.
1279
+
1280
+ Deixe-me criar uma para nossa tarefa.
1281
+ \`\`\`
1282
+
1283
+ **FAÇA:** Crie a change com um nome kebab-case derivado:
1284
+ \`\`\`bash
1285
+ openspec new change "<nome-derivado>"
1286
+ \`\`\`
1287
+
1288
+ **MOSTRE:**
1289
+ \`\`\`
1290
+ Criado: \`openspec/changes/<nome>/\`
1291
+
1292
+ A estrutura de pastas:
1293
+ \`\`\`
1294
+ openspec/changes/<nome>/
1295
+ ├── proposal.md ← Por que estamos fazendo isso (vazio, vamos preencher)
1296
+ ├── design.md ← Como vamos construir (vazio)
1297
+ ├── specs/ ← Requisitos detalhados (vazio)
1298
+ └── tasks.md ← Checklist de implementação (vazio)
1299
+ \`\`\`
1300
+
1301
+ Agora vamos preencher o primeiro artifact - a proposal.
1302
+ \`\`\`
1303
+
1304
+ ---
1305
+
1306
+ ## Fase 5: Proposal
1307
+
1308
+ **EXPLIQUE:**
1309
+ \`\`\`
1310
+ ## A Proposal
1311
+
1312
+ A proposal captura **por que** estamos fazendo esta change e **o que** ela envolve em alto nível. É o "pitch de elevador" para o trabalho.
1313
+
1314
+ Vou elaborar uma com base na nossa tarefa.
1315
+ \`\`\`
1316
+
1317
+ **FAÇA:** Elabore o conteúdo da proposal (ainda não salve):
1318
+
1319
+ \`\`\`
1320
+ Aqui está um rascunho de proposal:
1321
+
1322
+ ---
1323
+
1324
+ ## Por Que
1325
+
1326
+ [1-2 frases explicando o problema/oportunidade]
1327
+
1328
+ ## O Que Muda
1329
+
1330
+ [Bullet points do que será diferente]
1331
+
1332
+ ## Capabilities
1333
+
1334
+ ### Novas Capabilities
1335
+ - \`<nome-capability>\`: [breve descrição]
1336
+
1337
+ ### Capabilities Modificadas
1338
+ <!-- Se modificar comportamento existente -->
1339
+
1340
+ ## Impacto
1341
+
1342
+ - \`src/caminho/para/arquivo.ts\`: [o que muda]
1343
+ - [outros arquivos se aplicável]
1344
+
1345
+ ---
1346
+
1347
+ Isso captura a intenção? Posso ajustar antes de salvá-la.
1348
+ \`\`\`
1349
+
1350
+ **PAUSA** - Aguarde aprovação/feedback do usuário.
1351
+
1352
+ Após aprovação, salve a proposal:
1353
+ \`\`\`bash
1354
+ openspec instructions proposal --change "<nome>" --json
1355
+ \`\`\`
1356
+ Depois escreva o conteúdo em \`openspec/changes/<nome>/proposal.md\`.
1357
+
1358
+ \`\`\`
1359
+ Proposal salva. Este é seu documento de "por que" - você sempre pode voltar e refiná-lo à medida que o entendimento evolui.
1360
+
1361
+ Próximo: specs.
1362
+ \`\`\`
1363
+
1364
+ ---
1365
+
1366
+ ## Fase 6: Specs
1367
+
1368
+ **EXPLIQUE:**
1369
+ \`\`\`
1370
+ ## Specs
1371
+
1372
+ Os specs definem **o que** estamos construindo em termos precisos e testáveis. Eles usam um formato de requisito/cenário que torna o comportamento esperado cristalino.
1373
+
1374
+ Para uma tarefa pequena como esta, talvez precisemos apenas de um arquivo spec.
1375
+ \`\`\`
1376
+
1377
+ **FAÇA:** Crie o arquivo spec:
1378
+ \`\`\`bash
1379
+ # Unix/macOS
1380
+ mkdir -p openspec/changes/<nome>/specs/<nome-capability>
1381
+ # Windows (PowerShell)
1382
+ # New-Item -ItemType Directory -Force -Path "openspec/changes/<nome>/specs/<nome-capability>"
1383
+ \`\`\`
1384
+
1385
+ Elabore o conteúdo do spec:
1386
+
1387
+ \`\`\`
1388
+ Aqui está o spec:
1389
+
1390
+ ---
1391
+
1392
+ ## Requisitos ADICIONADOS
1393
+
1394
+ ### Requisito: <Nome>
1395
+
1396
+ <Descrição do que o sistema deve fazer>
1397
+
1398
+ #### Cenário: <Nome do cenário>
1399
+
1400
+ - **QUANDO** <condição de gatilho>
1401
+ - **ENTÃO** <resultado esperado>
1402
+ - **E** <resultado adicional se necessário>
1403
+
1404
+ ---
1405
+
1406
+ Este formato - QUANDO/ENTÃO/E - torna os requisitos testáveis. Você pode literalmente lê-los como casos de teste.
1407
+ \`\`\`
1408
+
1409
+ Salve em \`openspec/changes/<nome>/specs/<capability>/spec.md\`.
1410
+
1411
+ ---
1412
+
1413
+ ## Fase 7: Design
1414
+
1415
+ **EXPLIQUE:**
1416
+ \`\`\`
1417
+ ## Design
1418
+
1419
+ O design captura **como** vamos construir - decisões técnicas, tradeoffs, abordagem.
1420
+
1421
+ Para changes pequenas, isto pode ser breve. Tudo bem - nem toda change precisa de discussão profunda de design.
1422
+ \`\`\`
1423
+
1424
+ **FAÇA:** Elabore design.md:
1425
+
1426
+ \`\`\`
1427
+ Aqui está o design:
1428
+
1429
+ ---
1430
+
1431
+ ## Contexto
1432
+
1433
+ [Contexto breve sobre o estado atual]
1434
+
1435
+ ## Objetivos / Não-Objetivos
1436
+
1437
+ **Objetivos:**
1438
+ - [O que estamos tentando alcançar]
1439
+
1440
+ **Não-Objetivos:**
1441
+ - [O que está explicitamente fora do escopo]
1442
+
1443
+ ## Decisões
1444
+
1445
+ ### Decisão 1: [Decisão-chave]
1446
+
1447
+ [Explicação da abordagem e racional]
1448
+
1449
+ ---
1450
+
1451
+ Para uma tarefa pequena, isto captura as decisões-chave sem over-engineering.
1452
+ \`\`\`
1453
+
1454
+ Salve em \`openspec/changes/<nome>/design.md\`.
1455
+
1456
+ ---
1457
+
1458
+ ## Fase 8: Tasks
1459
+
1460
+ **EXPLIQUE:**
1461
+ \`\`\`
1462
+ ## Tasks
1463
+
1464
+ Finalmente, quebramos o trabalho em tarefas de implementação - checkboxes que impulsionam a fase de apply.
1465
+
1466
+ Elas devem ser pequenas, claras e em ordem lógica.
1467
+ \`\`\`
1468
+
1469
+ **FAÇA:** Gere tarefas baseadas nos specs e design:
1470
+
1471
+ \`\`\`
1472
+ Aqui estão as tarefas de implementação:
1473
+
1474
+ ---
1475
+
1476
+ ## 1. [Categoria ou arquivo]
1477
+
1478
+ - [ ] 1.1 [Tarefa específica]
1479
+ - [ ] 1.2 [Tarefa específica]
1480
+
1481
+ ## 2. Verificar
1482
+
1483
+ - [ ] 2.1 [Etapa de verificação]
1484
+
1485
+ ---
1486
+
1487
+ Cada checkbox se torna uma unidade de trabalho na fase de apply. Pronto para implementar?
1488
+ \`\`\`
1489
+
1490
+ **PAUSA** - Aguarde o usuário confirmar que está pronto para implementar.
1491
+
1492
+ Salve em \`openspec/changes/<nome>/tasks.md\`.
1493
+
1494
+ ---
1495
+
1496
+ ## Fase 9: Apply (Implementação)
1497
+
1498
+ **EXPLIQUE:**
1499
+ \`\`\`
1500
+ ## Implementação
1501
+
1502
+ Agora implementamos cada tarefa, marcando-as à medida que avançamos. Anunciarei cada uma e ocasionalmente notarei como os specs/design informaram a abordagem.
1503
+ \`\`\`
1504
+
1505
+ **FAÇA:** Para cada tarefa:
1506
+
1507
+ 1. Anuncie: "Trabalhando na tarefa N: [descrição]"
1508
+ 2. Implemente a mudança na codebase
1509
+ 3. Referencie specs/design naturalmente: "O spec diz X, então estou fazendo Y"
1510
+ 4. Marque como concluída em tasks.md: \`- [ ]\` → \`- [x]\`
1511
+ 5. Breve status: "✓ Tarefa N concluída"
1512
+
1513
+ Mantenha a narração leve - não explique cada linha de código.
1514
+
1515
+ Após todas as tarefas:
1516
+
1517
+ \`\`\`
1518
+ ## Implementação Concluída
1519
+
1520
+ Todas as tarefas concluídas:
1521
+ - [x] Tarefa 1
1522
+ - [x] Tarefa 2
1523
+ - [x] ...
1524
+
1525
+ A change está implementada! Mais um passo - vamos arquivá-la.
1526
+ \`\`\`
1527
+
1528
+ ---
1529
+
1530
+ ## Fase 10: Archive
1531
+
1532
+ **EXPLIQUE:**
1533
+ \`\`\`
1534
+ ## Arquivamento
1535
+
1536
+ Quando uma change está completa, nós a arquivamos. Isso a move de \`openspec/changes/\` para \`openspec/changes/archive/YYYY-MM-DD-<nome>/\`.
1537
+
1538
+ As changes arquivadas se tornam o histórico de decisões do seu projeto - você sempre pode encontrá-las depois para entender por que algo foi construído de certa forma.
1539
+ \`\`\`
1540
+
1541
+ **FAÇA:**
1542
+ \`\`\`bash
1543
+ openspec archive "<nome>"
1544
+ \`\`\`
1545
+
1546
+ **MOSTRE:**
1547
+ \`\`\`
1548
+ Arquivado em: \`openspec/changes/archive/YYYY-MM-DD-<nome>/\`
1549
+
1550
+ A change agora faz parte do histórico do seu projeto. O código está na sua codebase, o registro de decisão está preservado.
1551
+ \`\`\`
1552
+
1553
+ ---
1554
+
1555
+ ## Fase 11: Recapitulação e Próximos Passos
1556
+
1557
+ \`\`\`
1558
+ ## Parabéns!
1559
+
1560
+ Você acabou de completar um ciclo completo do BR-OpenSpec:
1561
+
1562
+ 1. **Explore** - Pensou sobre o problema
1563
+ 2. **New** - Criou um container de change
1564
+ 3. **Proposal** - Capturou POR QUE
1565
+ 4. **Specs** - Definiu O QUE em detalhes
1566
+ 5. **Design** - Decidiu COMO
1567
+ 6. **Tasks** - Quebrou em passos
1568
+ 7. **Apply** - Implementou o trabalho
1569
+ 8. **Archive** - Preservou o registro
1570
+
1571
+ Este mesmo ritmo funciona para qualquer tamanho de change - uma pequena correção ou uma funcionalidade principal.
1572
+
1573
+ ---
1574
+
1575
+ ## Referência de Comandos
1576
+
1577
+ **Workflow principal:**
1578
+
1579
+ | Comando | O que faz |
1580
+ |-------------------|---------------------------------------------|
1581
+ | \`/opsx:propose\` | Cria uma change e gera todos os artifacts |
1582
+ | \`/opsx:explore\` | Pensa sobre problemas antes/durante o trabalho |
1583
+ | \`/opsx:apply\` | Implementa tarefas de uma change |
1584
+ | \`/opsx:archive\` | Arquiva uma change concluída |
1585
+
1586
+ **Comandos adicionais:**
1587
+
1588
+ | Comando | O que faz |
1589
+ |--------------------|--------------------------------------------------------|
1590
+ | \`/opsx:new\` | Inicia uma nova change, passo a passo pelos artifacts |
1591
+ | \`/opsx:continue\` | Continua trabalhando em uma change existente |
1592
+ | \`/opsx:ff\` | Fast-forward: cria todos os artifacts de uma vez |
1593
+ | \`/opsx:verify\` | Verifica se implementação corresponde aos artifacts |
1594
+
1595
+ ---
1596
+
1597
+ ## E Agora?
1598
+
1599
+ Experimente \`/opsx:propose\` em algo que você realmente quer construir. Você já pegou o ritmo!
1600
+ \`\`\`
1601
+
1602
+ ---
1603
+
1604
+ ## Tratamento de Saída Graciosa
1605
+
1606
+ ### Usuário quer parar no meio do caminho
1607
+
1608
+ Se o usuário disser que precisa parar, quer pausar, ou parecer desengajado:
1609
+
1610
+ \`\`\`
1611
+ Sem problema! Sua change está salva em \`openspec/changes/<nome>/\`.
1612
+
1613
+ Para retomar de onde paramos depois:
1614
+ - \`/opsx:continue <nome>\` - Retoma a criação de artifacts
1615
+ - \`/opsx:apply <nome>\` - Pula para implementação (se tasks existirem)
1616
+
1617
+ O trabalho não será perdido. Volte quando estiver pronto.
1618
+ \`\`\`
1619
+
1620
+ Saia graciosamente sem pressão.
1621
+
1622
+ ### Usuário apenas quer a referência de comandos
1623
+
1624
+ Se o usuário disser que apenas quer ver os comandos ou pular o tutorial:
1625
+
1626
+ \`\`\`
1627
+ ## Referência Rápida do BR-OpenSpec
1628
+
1629
+ **Workflow principal:**
1630
+
1631
+ | Comando | O que faz |
1632
+ |--------------------------|---------------------------------------------|
1633
+ | \`/opsx:propose <nome>\` | Cria uma change e gera todos os artifacts |
1634
+ | \`/opsx:explore\` | Pensa sobre problemas (sem mudanças de código) |
1635
+ | \`/opsx:apply <nome>\` | Implementa tarefas |
1636
+ | \`/opsx:archive <nome>\` | Arquiva quando concluído |
1637
+
1638
+ **Comandos adicionais:**
1639
+
1640
+ | Comando | O que faz |
1641
+ |---------------------------|----------------------------------|
1642
+ | \`/opsx:new <nome>\` | Inicia uma nova change, passo a passo |
1643
+ | \`/opsx:continue <nome>\` | Continua uma change existente |
1644
+ | \`/opsx:ff <nome>\` | Fast-forward: todos os artifacts de uma vez |
1645
+ | \`/opsx:verify <nome>\` | Verifica implementação |
1646
+
1647
+ Experimente \`/opsx:propose\` para iniciar sua primeira change.
1648
+ \`\`\`
1649
+
1650
+ Saia graciosamente.
1651
+
1652
+ ---
1653
+
1654
+ ## Guardrails
1655
+
1656
+ - **Siga o padrão EXPLICAR → FAZER → MOSTRAR → PAUSA** nas transições-chave (após explore, após rascunho de proposal, após tasks, após archive)
1657
+ - **Mantenha a narração leve** durante a implementação - ensine sem pregar
1658
+ - **Não pule fases** mesmo se a change for pequena - o objetivo é ensinar o workflow
1659
+ - **Pause para confirmação** nos pontos marcados, mas não exagere nas pausas
1660
+ - **Trate saídas graciosamente** - nunca pressione o usuário a continuar
1661
+ - **Use tarefas reais da codebase** - não simule ou use exemplos falsos
1630
1662
  - **Ajuste o escopo gentilmente** - guie para tarefas menores mas respeite a escolha do usuário`,
1631
1663
  };
1632
1664
  // ═══════════════════════════════════════════════════════════
@@ -1636,319 +1668,319 @@ export const VERIFY_CHANGE_TEMPLATE_MESSAGES = {
1636
1668
  skillDescription: 'Verifica se a implementação corresponde aos artifacts da change. Use quando o usuário quiser validar que a implementação está completa, correta e coerente antes de arquivar.',
1637
1669
  skillCompatibility: 'Requer openspec CLI.',
1638
1670
  opsxDescription: 'Verifica se a implementação corresponde aos artifacts da change antes de arquivar',
1639
- skillInstructions: `Verifica se uma implementação corresponde aos artifacts da change (specs, tasks, design).
1640
-
1641
- **Entrada**: Opcionalmente especifique um nome de change. Se omitido, verifique se pode ser inferido do contexto da conversa. Se vago ou ambíguo, você DEVE solicitar as changes disponíveis.
1642
-
1643
- **Passos**
1644
-
1645
- 1. **Se nenhum nome de change for fornecido, solicite a seleção**
1646
-
1647
- Execute \`openspec list --json\` para obter as changes disponíveis. Use a ferramenta **AskUserQuestion** para permitir que o usuário selecione.
1648
-
1649
- Mostre as changes que possuem tarefas de implementação (o artifact tasks existe).
1650
- Inclua o schema usado para cada change, se disponível.
1651
- Marque as changes com tarefas incompletas como "(Em Progresso)".
1652
-
1653
- **IMPORTANTE**: NÃO adivinhe ou selecione automaticamente uma change. Sempre deixe o usuário escolher.
1654
-
1655
- 2. **Verifique o status para entender o schema**
1656
- \`\`\`bash
1657
- openspec status --change "<nome>" --json
1658
- \`\`\`
1659
- Analise o JSON para entender:
1660
- - \`schemaName\`: O workflow sendo usado (por exemplo, "spec-driven")
1661
- - Quais artifacts existem para esta change
1662
-
1663
- 3. **Obtenha o diretório da change e carregue os artifacts**
1664
-
1665
- \`\`\`bash
1666
- openspec instructions apply --change "<nome>" --json
1667
- \`\`\`
1668
-
1669
- Isso retorna o diretório da change e \`contextFiles\` (artifact ID -> array de caminhos de arquivos concretos). Leia todos os artifacts disponíveis de \`contextFiles\`.
1670
-
1671
- 4. **Inicialize a estrutura do relatório de verificação**
1672
-
1673
- Crie uma estrutura de relatório com três dimensões:
1674
- - **Completeness**: Acompanhe tasks e cobertura de specs
1675
- - **Correctness**: Acompanhe implementação de requisitos e cobertura de cenários
1676
- - **Coherence**: Acompanhe aderência ao design e consistência de padrões
1677
-
1678
- Cada dimensão pode ter issues CRITICAL, WARNING ou SUGGESTION.
1679
-
1680
- 5. **Verifique Completeness**
1681
-
1682
- **Conclusão de Tasks**:
1683
- - Se \`contextFiles.tasks\` existir, leia cada caminho de arquivo nele
1684
- - Analise checkboxes: \`- [ ]\` (incompleto) vs \`- [x]\` (concluído)
1685
- - Conte tasks concluídas vs total
1686
- - Se houver tasks incompletas:
1687
- - Adicione issue CRITICAL para cada task incompleta
1688
- - Recomendação: "Complete task: <descrição>" ou "Mark as done if already implemented"
1689
-
1690
- **Cobertura de Specs**:
1691
- - Se delta specs existirem em \`openspec/changes/<nome>/specs/\`:
1692
- - Extraia todos os requisitos (marcados com "### Requirement:")
1693
- - Para cada requisito:
1694
- - Procure no codebase por palavras-chave relacionadas ao requisito
1695
- - Avalie se a implementação provavelmente existe
1696
- - Se requisitos parecerem não implementados:
1697
- - Adicione issue CRITICAL: "Requirement not found: <nome do requisito>"
1698
- - Recomendação: "Implement requirement X: <descrição>"
1699
-
1700
- 6. **Verifique Correctness**
1701
-
1702
- **Mapeamento de Implementação de Requisitos**:
1703
- - Para cada requisito dos delta specs:
1704
- - Procure no codebase por evidências de implementação
1705
- - Se encontrado, anote os caminhos de arquivo e intervalos de linha
1706
- - Avalie se a implementação corresponde à intenção do requisito
1707
- - Se divergência for detectada:
1708
- - Adicione WARNING: "Implementation may diverge from spec: <detalhes>"
1709
- - Recomendação: "Review <arquivo>:<linhas> contra requirement X"
1710
-
1711
- **Cobertura de Cenários**:
1712
- - Para cada cenário nos delta specs (marcado com "#### Scenario:"):
1713
- - Verifique se as condições são tratadas no código
1714
- - Verifique se existem testes cobrindo o cenário
1715
- - Se o cenário parecer não coberto:
1716
- - Adicione WARNING: "Scenario not covered: <nome do cenário>"
1717
- - Recomendação: "Add test or implementation for scenario: <descrição>"
1718
-
1719
- 7. **Verifique Coherence**
1720
-
1721
- **Aderência ao Design**:
1722
- - Se \`contextFiles.design\` existir:
1723
- - Extraia decisões-chave (procure por seções como "Decision:", "Approach:", "Architecture:")
1724
- - Verifique se a implementação segue essas decisões
1725
- - Se contradição for detectada:
1726
- - Adicione WARNING: "Design decision not followed: <decisão>"
1727
- - Recomendação: "Update implementation or revise design.md to match reality"
1728
- - Se não houver design.md: Pule a verificação de aderência ao design, anote "No design.md to verify against"
1729
-
1730
- **Consistência de Padrões de Código**:
1731
- - Revise o novo código quanto à consistência com os padrões do projeto
1732
- - Verifique nomenclatura de arquivos, estrutura de diretórios, estilo de código
1733
- - Se houver desvios significativos:
1734
- - Adicione SUGGESTION: "Code pattern deviation: <detalhes>"
1735
- - Recomendação: "Consider following project pattern: <exemplo>"
1736
-
1737
- 8. **Gere o Relatório de Verificação**
1738
-
1739
- **Scorecard de Resumo**:
1740
- \`\`\`
1741
- ## Verification Report: <nome-change>
1742
-
1743
- ### Summary
1744
- | Dimension | Status |
1745
- |--------------|------------------|
1746
- | Completeness | X/Y tasks, N reqs|
1747
- | Correctness | M/N reqs covered |
1748
- | Coherence | Followed/Issues |
1749
- \`\`\`
1750
-
1751
- **Issues por Prioridade**:
1752
-
1753
- 1. **CRITICAL** (Deve corrigir antes de arquivar):
1754
- - Tasks incompletas
1755
- - Implementações de requisitos ausentes
1756
- - Cada uma com recomendação específica e acionável
1757
-
1758
- 2. **WARNING** (Deveria corrigir):
1759
- - Divergências de spec/design
1760
- - Cobertura de cenário ausente
1761
- - Cada uma com recomendação específica
1762
-
1763
- 3. **SUGGESTION** (Bom corrigir):
1764
- - Inconsistências de padrão
1765
- - Melhorias menores
1766
- - Cada uma com recomendação específica
1767
-
1768
- **Avaliação Final**:
1769
- - Se houver issues CRITICAL: "X critical issue(s) found. Fix before archiving."
1770
- - Se houver apenas warnings: "No critical issues. Y warning(s) to consider. Ready for archive (with noted improvements)."
1771
- - Se tudo estiver claro: "All checks passed. Ready for archive."
1772
-
1773
- **Heurísticas de Verificação**
1774
-
1775
- - **Completeness**: Foque em itens de checklist objetivos (checkboxes, lista de requisitos)
1776
- - **Correctness**: Use busca por palavras-chave, análise de caminhos de arquivo, inferência razoável — não exija certeza perfeita
1777
- - **Coherence**: Procure inconsistências gritantes, não seja meticuloso com estilo
1778
- - **False Positives**: Quando incerto, prefira SUGGESTION ao invés de WARNING, WARNING ao invés de CRITICAL
1779
- - **Actionability**: Cada issue deve ter uma recomendação específica com referências de arquivo/linha quando aplicável
1780
-
1781
- **Degradação Graciosa**
1782
-
1783
- - Se apenas tasks.md existir: verifique apenas a conclusão de tasks, pule verificações de spec/design
1784
- - Se tasks + specs existirem: verifique completeness e correctness, pule design
1785
- - Se todos os artifacts existirem: verifique as três dimensões
1786
- - Sempre anote quais verificações foram puladas e por quê
1787
-
1788
- **Formato de Saída**
1789
-
1790
- Use markdown claro com:
1791
- - Tabela para scorecard de resumo
1792
- - Listas agrupadas para issues (CRITICAL/WARNING/SUGGESTION)
1793
- - Referências de código no formato: \`arquivo.ts:123\`
1794
- - Recomendações específicas e acionáveis
1671
+ skillInstructions: `Verifica se uma implementação corresponde aos artifacts da change (specs, tasks, design).
1672
+
1673
+ **Entrada**: Opcionalmente especifique um nome de change. Se omitido, verifique se pode ser inferido do contexto da conversa. Se vago ou ambíguo, você DEVE solicitar as changes disponíveis.
1674
+
1675
+ **Passos**
1676
+
1677
+ 1. **Se nenhum nome de change for fornecido, solicite a seleção**
1678
+
1679
+ Execute \`openspec list --json\` para obter as changes disponíveis. Use a ferramenta **AskUserQuestion** para permitir que o usuário selecione.
1680
+
1681
+ Mostre as changes que possuem tarefas de implementação (o artifact tasks existe).
1682
+ Inclua o schema usado para cada change, se disponível.
1683
+ Marque as changes com tarefas incompletas como "(Em Progresso)".
1684
+
1685
+ **IMPORTANTE**: NÃO adivinhe ou selecione automaticamente uma change. Sempre deixe o usuário escolher.
1686
+
1687
+ 2. **Verifique o status para entender o schema**
1688
+ \`\`\`bash
1689
+ openspec status --change "<nome>" --json
1690
+ \`\`\`
1691
+ Analise o JSON para entender:
1692
+ - \`schemaName\`: O workflow sendo usado (por exemplo, "spec-driven")
1693
+ - Quais artifacts existem para esta change
1694
+
1695
+ 3. **Obtenha o diretório da change e carregue os artifacts**
1696
+
1697
+ \`\`\`bash
1698
+ openspec instructions apply --change "<nome>" --json
1699
+ \`\`\`
1700
+
1701
+ Isso retorna o diretório da change e \`contextFiles\` (artifact ID -> array de caminhos de arquivos concretos). Leia todos os artifacts disponíveis de \`contextFiles\`.
1702
+
1703
+ 4. **Inicialize a estrutura do relatório de verificação**
1704
+
1705
+ Crie uma estrutura de relatório com três dimensões:
1706
+ - **Completeness**: Acompanhe tasks e cobertura de specs
1707
+ - **Correctness**: Acompanhe implementação de requisitos e cobertura de cenários
1708
+ - **Coherence**: Acompanhe aderência ao design e consistência de padrões
1709
+
1710
+ Cada dimensão pode ter issues CRITICAL, WARNING ou SUGGESTION.
1711
+
1712
+ 5. **Verifique Completeness**
1713
+
1714
+ **Conclusão de Tasks**:
1715
+ - Se \`contextFiles.tasks\` existir, leia cada caminho de arquivo nele
1716
+ - Analise checkboxes: \`- [ ]\` (incompleto) vs \`- [x]\` (concluído)
1717
+ - Conte tasks concluídas vs total
1718
+ - Se houver tasks incompletas:
1719
+ - Adicione issue CRITICAL para cada task incompleta
1720
+ - Recomendação: "Complete task: <descrição>" ou "Mark as done if already implemented"
1721
+
1722
+ **Cobertura de Specs**:
1723
+ - Se delta specs existirem em \`openspec/changes/<nome>/specs/\`:
1724
+ - Extraia todos os requisitos (marcados com "### Requirement:")
1725
+ - Para cada requisito:
1726
+ - Procure no codebase por palavras-chave relacionadas ao requisito
1727
+ - Avalie se a implementação provavelmente existe
1728
+ - Se requisitos parecerem não implementados:
1729
+ - Adicione issue CRITICAL: "Requirement not found: <nome do requisito>"
1730
+ - Recomendação: "Implement requirement X: <descrição>"
1731
+
1732
+ 6. **Verifique Correctness**
1733
+
1734
+ **Mapeamento de Implementação de Requisitos**:
1735
+ - Para cada requisito dos delta specs:
1736
+ - Procure no codebase por evidências de implementação
1737
+ - Se encontrado, anote os caminhos de arquivo e intervalos de linha
1738
+ - Avalie se a implementação corresponde à intenção do requisito
1739
+ - Se divergência for detectada:
1740
+ - Adicione WARNING: "Implementation may diverge from spec: <detalhes>"
1741
+ - Recomendação: "Review <arquivo>:<linhas> contra requirement X"
1742
+
1743
+ **Cobertura de Cenários**:
1744
+ - Para cada cenário nos delta specs (marcado com "#### Scenario:"):
1745
+ - Verifique se as condições são tratadas no código
1746
+ - Verifique se existem testes cobrindo o cenário
1747
+ - Se o cenário parecer não coberto:
1748
+ - Adicione WARNING: "Scenario not covered: <nome do cenário>"
1749
+ - Recomendação: "Add test or implementation for scenario: <descrição>"
1750
+
1751
+ 7. **Verifique Coherence**
1752
+
1753
+ **Aderência ao Design**:
1754
+ - Se \`contextFiles.design\` existir:
1755
+ - Extraia decisões-chave (procure por seções como "Decision:", "Approach:", "Architecture:")
1756
+ - Verifique se a implementação segue essas decisões
1757
+ - Se contradição for detectada:
1758
+ - Adicione WARNING: "Design decision not followed: <decisão>"
1759
+ - Recomendação: "Update implementation or revise design.md to match reality"
1760
+ - Se não houver design.md: Pule a verificação de aderência ao design, anote "No design.md to verify against"
1761
+
1762
+ **Consistência de Padrões de Código**:
1763
+ - Revise o novo código quanto à consistência com os padrões do projeto
1764
+ - Verifique nomenclatura de arquivos, estrutura de diretórios, estilo de código
1765
+ - Se houver desvios significativos:
1766
+ - Adicione SUGGESTION: "Code pattern deviation: <detalhes>"
1767
+ - Recomendação: "Consider following project pattern: <exemplo>"
1768
+
1769
+ 8. **Gere o Relatório de Verificação**
1770
+
1771
+ **Scorecard de Resumo**:
1772
+ \`\`\`
1773
+ ## Verification Report: <nome-change>
1774
+
1775
+ ### Summary
1776
+ | Dimension | Status |
1777
+ |--------------|------------------|
1778
+ | Completeness | X/Y tasks, N reqs|
1779
+ | Correctness | M/N reqs covered |
1780
+ | Coherence | Followed/Issues |
1781
+ \`\`\`
1782
+
1783
+ **Issues por Prioridade**:
1784
+
1785
+ 1. **CRITICAL** (Deve corrigir antes de arquivar):
1786
+ - Tasks incompletas
1787
+ - Implementações de requisitos ausentes
1788
+ - Cada uma com recomendação específica e acionável
1789
+
1790
+ 2. **WARNING** (Deveria corrigir):
1791
+ - Divergências de spec/design
1792
+ - Cobertura de cenário ausente
1793
+ - Cada uma com recomendação específica
1794
+
1795
+ 3. **SUGGESTION** (Bom corrigir):
1796
+ - Inconsistências de padrão
1797
+ - Melhorias menores
1798
+ - Cada uma com recomendação específica
1799
+
1800
+ **Avaliação Final**:
1801
+ - Se houver issues CRITICAL: "X critical issue(s) found. Fix before archiving."
1802
+ - Se houver apenas warnings: "No critical issues. Y warning(s) to consider. Ready for archive (with noted improvements)."
1803
+ - Se tudo estiver claro: "All checks passed. Ready for archive."
1804
+
1805
+ **Heurísticas de Verificação**
1806
+
1807
+ - **Completeness**: Foque em itens de checklist objetivos (checkboxes, lista de requisitos)
1808
+ - **Correctness**: Use busca por palavras-chave, análise de caminhos de arquivo, inferência razoável — não exija certeza perfeita
1809
+ - **Coherence**: Procure inconsistências gritantes, não seja meticuloso com estilo
1810
+ - **False Positives**: Quando incerto, prefira SUGGESTION ao invés de WARNING, WARNING ao invés de CRITICAL
1811
+ - **Actionability**: Cada issue deve ter uma recomendação específica com referências de arquivo/linha quando aplicável
1812
+
1813
+ **Degradação Graciosa**
1814
+
1815
+ - Se apenas tasks.md existir: verifique apenas a conclusão de tasks, pule verificações de spec/design
1816
+ - Se tasks + specs existirem: verifique completeness e correctness, pule design
1817
+ - Se todos os artifacts existirem: verifique as três dimensões
1818
+ - Sempre anote quais verificações foram puladas e por quê
1819
+
1820
+ **Formato de Saída**
1821
+
1822
+ Use markdown claro com:
1823
+ - Tabela para scorecard de resumo
1824
+ - Listas agrupadas para issues (CRITICAL/WARNING/SUGGESTION)
1825
+ - Referências de código no formato: \`arquivo.ts:123\`
1826
+ - Recomendações específicas e acionáveis
1795
1827
  - Sem sugestões vagas como "consider reviewing"`,
1796
- opsxContent: `Verifica se uma implementação corresponde aos artifacts da change (specs, tasks, design).
1797
-
1798
- **Entrada**: Opcionalmente especifique um nome de change após \`/opsx:verify\` (por exemplo, \`/opsx:verify add-auth\`). Se omitido, verifique se pode ser inferido do contexto da conversa. Se vago ou ambíguo, você DEVE solicitar as changes disponíveis.
1799
-
1800
- **Passos**
1801
-
1802
- 1. **Se nenhum nome de change for fornecido, solicite a seleção**
1803
-
1804
- Execute \`openspec list --json\` para obter as changes disponíveis. Use a ferramenta **AskUserQuestion** para permitir que o usuário selecione.
1805
-
1806
- Mostre as changes que possuem tarefas de implementação (o artifact tasks existe).
1807
- Inclua o schema usado para cada change, se disponível.
1808
- Marque as changes com tarefas incompletas como "(Em Progresso)".
1809
-
1810
- **IMPORTANTE**: NÃO adivinhe ou selecione automaticamente uma change. Sempre deixe o usuário escolher.
1811
-
1812
- 2. **Verifique o status para entender o schema**
1813
- \`\`\`bash
1814
- openspec status --change "<nome>" --json
1815
- \`\`\`
1816
- Analise o JSON para entender:
1817
- - \`schemaName\`: O workflow sendo usado (por exemplo, "spec-driven")
1818
- - Quais artifacts existem para esta change
1819
-
1820
- 3. **Obtenha o diretório da change e carregue os artifacts**
1821
-
1822
- \`\`\`bash
1823
- openspec instructions apply --change "<nome>" --json
1824
- \`\`\`
1825
-
1826
- Isso retorna o diretório da change e \`contextFiles\` (artifact ID -> array de caminhos de arquivos concretos). Leia todos os artifacts disponíveis de \`contextFiles\`.
1827
-
1828
- 4. **Inicialize a estrutura do relatório de verificação**
1829
-
1830
- Crie uma estrutura de relatório com três dimensões:
1831
- - **Completeness**: Acompanhe tasks e cobertura de specs
1832
- - **Correctness**: Acompanhe implementação de requisitos e cobertura de cenários
1833
- - **Coherence**: Acompanhe aderência ao design e consistência de padrões
1834
-
1835
- Cada dimensão pode ter issues CRITICAL, WARNING ou SUGGESTION.
1836
-
1837
- 5. **Verifique Completeness**
1838
-
1839
- **Conclusão de Tasks**:
1840
- - Se \`contextFiles.tasks\` existir, leia cada caminho de arquivo nele
1841
- - Analise checkboxes: \`- [ ]\` (incompleto) vs \`- [x]\` (concluído)
1842
- - Conte tasks concluídas vs total
1843
- - Se houver tasks incompletas:
1844
- - Adicione issue CRITICAL para cada task incompleta
1845
- - Recomendação: "Complete task: <descrição>" ou "Mark as done if already implemented"
1846
-
1847
- **Cobertura de Specs**:
1848
- - Se delta specs existirem em \`openspec/changes/<nome>/specs/\`:
1849
- - Extraia todos os requisitos (marcados com "### Requirement:")
1850
- - Para cada requisito:
1851
- - Procure no codebase por palavras-chave relacionadas ao requisito
1852
- - Avalie se a implementação provavelmente existe
1853
- - Se requisitos parecerem não implementados:
1854
- - Adicione issue CRITICAL: "Requirement not found: <nome do requisito>"
1855
- - Recomendação: "Implement requirement X: <descrição>"
1856
-
1857
- 6. **Verifique Correctness**
1858
-
1859
- **Mapeamento de Implementação de Requisitos**:
1860
- - Para cada requisito dos delta specs:
1861
- - Procure no codebase por evidências de implementação
1862
- - Se encontrado, anote os caminhos de arquivo e intervalos de linha
1863
- - Avalie se a implementação corresponde à intenção do requisito
1864
- - Se divergência for detectada:
1865
- - Adicione WARNING: "Implementation may diverge from spec: <detalhes>"
1866
- - Recomendação: "Review <arquivo>:<linhas> contra requirement X"
1867
-
1868
- **Cobertura de Cenários**:
1869
- - Para cada cenário nos delta specs (marcado com "#### Scenario:"):
1870
- - Verifique se as condições são tratadas no código
1871
- - Verifique se existem testes cobrindo o cenário
1872
- - Se o cenário parecer não coberto:
1873
- - Adicione WARNING: "Scenario not covered: <nome do cenário>"
1874
- - Recomendação: "Add test or implementation for scenario: <descrição>"
1875
-
1876
- 7. **Verifique Coherence**
1877
-
1878
- **Aderência ao Design**:
1879
- - Se \`contextFiles.design\` existir:
1880
- - Extraia decisões-chave (procure por seções como "Decision:", "Approach:", "Architecture:")
1881
- - Verifique se a implementação segue essas decisões
1882
- - Se contradição for detectada:
1883
- - Adicione WARNING: "Design decision not followed: <decisão>"
1884
- - Recomendação: "Update implementation or revise design.md to match reality"
1885
- - Se não houver design.md: Pule a verificação de aderência ao design, anote "No design.md to verify against"
1886
-
1887
- **Consistência de Padrões de Código**:
1888
- - Revise o novo código quanto à consistência com os padrões do projeto
1889
- - Verifique nomenclatura de arquivos, estrutura de diretórios, estilo de código
1890
- - Se houver desvios significativos:
1891
- - Adicione SUGGESTION: "Code pattern deviation: <detalhes>"
1892
- - Recomendação: "Consider following project pattern: <exemplo>"
1893
-
1894
- 8. **Gere o Relatório de Verificação**
1895
-
1896
- **Scorecard de Resumo**:
1897
- \`\`\`
1898
- ## Verification Report: <nome-change>
1899
-
1900
- ### Summary
1901
- | Dimension | Status |
1902
- |--------------|------------------|
1903
- | Completeness | X/Y tasks, N reqs|
1904
- | Correctness | M/N reqs covered |
1905
- | Coherence | Followed/Issues |
1906
- \`\`\`
1907
-
1908
- **Issues por Prioridade**:
1909
-
1910
- 1. **CRITICAL** (Deve corrigir antes de arquivar):
1911
- - Tasks incompletas
1912
- - Implementações de requisitos ausentes
1913
- - Cada uma com recomendação específica e acionável
1914
-
1915
- 2. **WARNING** (Deveria corrigir):
1916
- - Divergências de spec/design
1917
- - Cobertura de cenário ausente
1918
- - Cada uma com recomendação específica
1919
-
1920
- 3. **SUGGESTION** (Bom corrigir):
1921
- - Inconsistências de padrão
1922
- - Melhorias menores
1923
- - Cada uma com recomendação específica
1924
-
1925
- **Avaliação Final**:
1926
- - Se houver issues CRITICAL: "X critical issue(s) found. Fix before archiving."
1927
- - Se houver apenas warnings: "No critical issues. Y warning(s) to consider. Ready for archive (with noted improvements)."
1928
- - Se tudo estiver claro: "All checks passed. Ready for archive."
1929
-
1930
- **Heurísticas de Verificação**
1931
-
1932
- - **Completeness**: Foque em itens de checklist objetivos (checkboxes, lista de requisitos)
1933
- - **Correctness**: Use busca por palavras-chave, análise de caminhos de arquivo, inferência razoável — não exija certeza perfeita
1934
- - **Coherence**: Procure inconsistências gritantes, não seja meticuloso com estilo
1935
- - **False Positives**: Quando incerto, prefira SUGGESTION ao invés de WARNING, WARNING ao invés de CRITICAL
1936
- - **Actionability**: Cada issue deve ter uma recomendação específica com referências de arquivo/linha quando aplicável
1937
-
1938
- **Degradação Graciosa**
1939
-
1940
- - Se apenas tasks.md existir: verifique apenas a conclusão de tasks, pule verificações de spec/design
1941
- - Se tasks + specs existirem: verifique completeness e correctness, pule design
1942
- - Se todos os artifacts existirem: verifique as três dimensões
1943
- - Sempre anote quais verificações foram puladas e por quê
1944
-
1945
- **Formato de Saída**
1946
-
1947
- Use markdown claro com:
1948
- - Tabela para scorecard de resumo
1949
- - Listas agrupadas para issues (CRITICAL/WARNING/SUGGESTION)
1950
- - Referências de código no formato: \`arquivo.ts:123\`
1951
- - Recomendações específicas e acionáveis
1828
+ opsxContent: `Verifica se uma implementação corresponde aos artifacts da change (specs, tasks, design).
1829
+
1830
+ **Entrada**: Opcionalmente especifique um nome de change após \`/opsx:verify\` (por exemplo, \`/opsx:verify add-auth\`). Se omitido, verifique se pode ser inferido do contexto da conversa. Se vago ou ambíguo, você DEVE solicitar as changes disponíveis.
1831
+
1832
+ **Passos**
1833
+
1834
+ 1. **Se nenhum nome de change for fornecido, solicite a seleção**
1835
+
1836
+ Execute \`openspec list --json\` para obter as changes disponíveis. Use a ferramenta **AskUserQuestion** para permitir que o usuário selecione.
1837
+
1838
+ Mostre as changes que possuem tarefas de implementação (o artifact tasks existe).
1839
+ Inclua o schema usado para cada change, se disponível.
1840
+ Marque as changes com tarefas incompletas como "(Em Progresso)".
1841
+
1842
+ **IMPORTANTE**: NÃO adivinhe ou selecione automaticamente uma change. Sempre deixe o usuário escolher.
1843
+
1844
+ 2. **Verifique o status para entender o schema**
1845
+ \`\`\`bash
1846
+ openspec status --change "<nome>" --json
1847
+ \`\`\`
1848
+ Analise o JSON para entender:
1849
+ - \`schemaName\`: O workflow sendo usado (por exemplo, "spec-driven")
1850
+ - Quais artifacts existem para esta change
1851
+
1852
+ 3. **Obtenha o diretório da change e carregue os artifacts**
1853
+
1854
+ \`\`\`bash
1855
+ openspec instructions apply --change "<nome>" --json
1856
+ \`\`\`
1857
+
1858
+ Isso retorna o diretório da change e \`contextFiles\` (artifact ID -> array de caminhos de arquivos concretos). Leia todos os artifacts disponíveis de \`contextFiles\`.
1859
+
1860
+ 4. **Inicialize a estrutura do relatório de verificação**
1861
+
1862
+ Crie uma estrutura de relatório com três dimensões:
1863
+ - **Completeness**: Acompanhe tasks e cobertura de specs
1864
+ - **Correctness**: Acompanhe implementação de requisitos e cobertura de cenários
1865
+ - **Coherence**: Acompanhe aderência ao design e consistência de padrões
1866
+
1867
+ Cada dimensão pode ter issues CRITICAL, WARNING ou SUGGESTION.
1868
+
1869
+ 5. **Verifique Completeness**
1870
+
1871
+ **Conclusão de Tasks**:
1872
+ - Se \`contextFiles.tasks\` existir, leia cada caminho de arquivo nele
1873
+ - Analise checkboxes: \`- [ ]\` (incompleto) vs \`- [x]\` (concluído)
1874
+ - Conte tasks concluídas vs total
1875
+ - Se houver tasks incompletas:
1876
+ - Adicione issue CRITICAL para cada task incompleta
1877
+ - Recomendação: "Complete task: <descrição>" ou "Mark as done if already implemented"
1878
+
1879
+ **Cobertura de Specs**:
1880
+ - Se delta specs existirem em \`openspec/changes/<nome>/specs/\`:
1881
+ - Extraia todos os requisitos (marcados com "### Requirement:")
1882
+ - Para cada requisito:
1883
+ - Procure no codebase por palavras-chave relacionadas ao requisito
1884
+ - Avalie se a implementação provavelmente existe
1885
+ - Se requisitos parecerem não implementados:
1886
+ - Adicione issue CRITICAL: "Requirement not found: <nome do requisito>"
1887
+ - Recomendação: "Implement requirement X: <descrição>"
1888
+
1889
+ 6. **Verifique Correctness**
1890
+
1891
+ **Mapeamento de Implementação de Requisitos**:
1892
+ - Para cada requisito dos delta specs:
1893
+ - Procure no codebase por evidências de implementação
1894
+ - Se encontrado, anote os caminhos de arquivo e intervalos de linha
1895
+ - Avalie se a implementação corresponde à intenção do requisito
1896
+ - Se divergência for detectada:
1897
+ - Adicione WARNING: "Implementation may diverge from spec: <detalhes>"
1898
+ - Recomendação: "Review <arquivo>:<linhas> contra requirement X"
1899
+
1900
+ **Cobertura de Cenários**:
1901
+ - Para cada cenário nos delta specs (marcado com "#### Scenario:"):
1902
+ - Verifique se as condições são tratadas no código
1903
+ - Verifique se existem testes cobrindo o cenário
1904
+ - Se o cenário parecer não coberto:
1905
+ - Adicione WARNING: "Scenario not covered: <nome do cenário>"
1906
+ - Recomendação: "Add test or implementation for scenario: <descrição>"
1907
+
1908
+ 7. **Verifique Coherence**
1909
+
1910
+ **Aderência ao Design**:
1911
+ - Se \`contextFiles.design\` existir:
1912
+ - Extraia decisões-chave (procure por seções como "Decision:", "Approach:", "Architecture:")
1913
+ - Verifique se a implementação segue essas decisões
1914
+ - Se contradição for detectada:
1915
+ - Adicione WARNING: "Design decision not followed: <decisão>"
1916
+ - Recomendação: "Update implementation or revise design.md to match reality"
1917
+ - Se não houver design.md: Pule a verificação de aderência ao design, anote "No design.md to verify against"
1918
+
1919
+ **Consistência de Padrões de Código**:
1920
+ - Revise o novo código quanto à consistência com os padrões do projeto
1921
+ - Verifique nomenclatura de arquivos, estrutura de diretórios, estilo de código
1922
+ - Se houver desvios significativos:
1923
+ - Adicione SUGGESTION: "Code pattern deviation: <detalhes>"
1924
+ - Recomendação: "Consider following project pattern: <exemplo>"
1925
+
1926
+ 8. **Gere o Relatório de Verificação**
1927
+
1928
+ **Scorecard de Resumo**:
1929
+ \`\`\`
1930
+ ## Verification Report: <nome-change>
1931
+
1932
+ ### Summary
1933
+ | Dimension | Status |
1934
+ |--------------|------------------|
1935
+ | Completeness | X/Y tasks, N reqs|
1936
+ | Correctness | M/N reqs covered |
1937
+ | Coherence | Followed/Issues |
1938
+ \`\`\`
1939
+
1940
+ **Issues por Prioridade**:
1941
+
1942
+ 1. **CRITICAL** (Deve corrigir antes de arquivar):
1943
+ - Tasks incompletas
1944
+ - Implementações de requisitos ausentes
1945
+ - Cada uma com recomendação específica e acionável
1946
+
1947
+ 2. **WARNING** (Deveria corrigir):
1948
+ - Divergências de spec/design
1949
+ - Cobertura de cenário ausente
1950
+ - Cada uma com recomendação específica
1951
+
1952
+ 3. **SUGGESTION** (Bom corrigir):
1953
+ - Inconsistências de padrão
1954
+ - Melhorias menores
1955
+ - Cada uma com recomendação específica
1956
+
1957
+ **Avaliação Final**:
1958
+ - Se houver issues CRITICAL: "X critical issue(s) found. Fix before archiving."
1959
+ - Se houver apenas warnings: "No critical issues. Y warning(s) to consider. Ready for archive (with noted improvements)."
1960
+ - Se tudo estiver claro: "All checks passed. Ready for archive."
1961
+
1962
+ **Heurísticas de Verificação**
1963
+
1964
+ - **Completeness**: Foque em itens de checklist objetivos (checkboxes, lista de requisitos)
1965
+ - **Correctness**: Use busca por palavras-chave, análise de caminhos de arquivo, inferência razoável — não exija certeza perfeita
1966
+ - **Coherence**: Procure inconsistências gritantes, não seja meticuloso com estilo
1967
+ - **False Positives**: Quando incerto, prefira SUGGESTION ao invés de WARNING, WARNING ao invés de CRITICAL
1968
+ - **Actionability**: Cada issue deve ter uma recomendação específica com referências de arquivo/linha quando aplicável
1969
+
1970
+ **Degradação Graciosa**
1971
+
1972
+ - Se apenas tasks.md existir: verifique apenas a conclusão de tasks, pule verificações de spec/design
1973
+ - Se tasks + specs existirem: verifique completeness e correctness, pule design
1974
+ - Se todos os artifacts existirem: verifique as três dimensões
1975
+ - Sempre anote quais verificações foram puladas e por quê
1976
+
1977
+ **Formato de Saída**
1978
+
1979
+ Use markdown claro com:
1980
+ - Tabela para scorecard de resumo
1981
+ - Listas agrupadas para issues (CRITICAL/WARNING/SUGGESTION)
1982
+ - Referências de código no formato: \`arquivo.ts:123\`
1983
+ - Recomendações específicas e acionáveis
1952
1984
  - Sem sugestões vagas como "consider reviewing"`,
1953
1985
  };
1954
1986
  // ═══════════════════════════════════════════════════════════
@@ -1957,4 +1989,110 @@ Use markdown claro com:
1957
1989
  export const TELEMETRY_MESSAGES = {
1958
1990
  firstRunNotice: 'Aviso: o BR-OpenSpec coleta estatísticas de uso anônimas. Para optar por não participar, defina OPENSPEC_TELEMETRY=0',
1959
1991
  };
1992
+ // ═══════════════════════════════════════════════════════════
1993
+ // Parser — Change Parser (src/core/parsers/change-parser.ts)
1994
+ // ═══════════════════════════════════════════════════════════
1995
+ export const CHANGE_PARSER_MESSAGES = {
1996
+ mustHaveWhySection: 'A alteração deve ter uma seção Why',
1997
+ mustHaveWhatChangesSection: 'A alteração deve ter uma seção What Changes',
1998
+ addRequirement: (text) => `Adicionar requisito: ${text}`,
1999
+ modifyRequirement: (text) => `Modificar requisito: ${text}`,
2000
+ removeRequirement: (text) => `Remover requisito: ${text}`,
2001
+ renameRequirement: (from, to) => `Renomear requisito de "${from}" para "${to}"`,
2002
+ };
2003
+ // ═══════════════════════════════════════════════════════════
2004
+ // Core — Specs Apply (src/core/specs-apply.ts)
2005
+ // ═══════════════════════════════════════════════════════════
2006
+ export const SPECS_APPLY_MESSAGES = {
2007
+ duplicateInSection: (specName, section, reqName) => `${specName} validação falhou - requisito duplicado em ${section} para cabeçalho "### Requirement: ${reqName}"`,
2008
+ duplicateFromInRenamed: (specName, reqName) => `${specName} validação falhou - FROM duplicado em RENAMED para cabeçalho "### Requirement: ${reqName}"`,
2009
+ duplicateToInRenamed: (specName, reqName) => `${specName} validação falhou - TO duplicado em RENAMED para cabeçalho "### Requirement: ${reqName}"`,
2010
+ renamedModifiedMustReferenceNew: (specName, toName) => `${specName} validação falhou - quando existe um rename, MODIFIED deve referenciar o NOVO cabeçalho "### Requirement: ${toName}"`,
2011
+ renamedToCollidesWithAdded: (specName, toName) => `${specName} validação falhou - cabeçalho RENAMED TO colide com ADDED para "### Requirement: ${toName}"`,
2012
+ requirementInMultipleSections: (specName, sectionA, sectionB, reqName) => `${specName} validação falhou - requisito presente em múltiplas seções (${sectionA} e ${sectionB}) para cabeçalho "### Requirement: ${reqName}"`,
2013
+ noDeltaOperations: (capability) => `Análise de delta não encontrou operações para ${capability}. Forneça seções ADDED/MODIFIED/REMOVED/RENAMED no spec da change.`,
2014
+ targetSpecNotExists: (specName) => `${specName}: spec alvo não existe; somente requisitos ADDED são permitidos para specs novos. Operações MODIFIED e RENAMED requerem um spec existente.`,
2015
+ targetSpecStructurallyInvalid: (specName, details) => `${specName}: spec alvo é estruturalmente inválido e não pode ser atualizado até ser corrigido:\n${details}`,
2016
+ renamedFailedSourceNotFound: (specName, reqName) => `${specName} RENAMED falhou para cabeçalho "### Requirement: ${reqName}" - origem não encontrada`,
2017
+ renamedFailedTargetExists: (specName, reqName) => `${specName} RENAMED falhou para cabeçalho "### Requirement: ${reqName}" - destino já existe`,
2018
+ removedFailedNotFound: (specName, reqName) => `${specName} REMOVED falhou para cabeçalho "### Requirement: ${reqName}" - não encontrado`,
2019
+ modifiedFailedNotFound: (specName, reqName) => `${specName} MODIFIED falhou para cabeçalho "### Requirement: ${reqName}" - não encontrado`,
2020
+ modifiedFailedHeaderMismatch: (specName, reqName) => `${specName} MODIFIED falhou para cabeçalho "### Requirement: ${reqName}" - incompatibilidade de cabeçalho no conteúdo`,
2021
+ addedFailedAlreadyExists: (specName, reqName) => `${specName} ADDED falhou para cabeçalho "### Requirement: ${reqName}" - já existe`,
2022
+ applyingChangesTo: (specPath) => `Aplicando alterações em openspec/specs/${specPath}/spec.md:`,
2023
+ wouldApplyChangesTo: (specPath) => `Aplicaria alterações em openspec/specs/${specPath}/spec.md:`,
2024
+ countAdded: (n) => ` + ${n} adicionado(s)`,
2025
+ countModified: (n) => ` ~ ${n} modificado(s)`,
2026
+ countRemoved: (n) => ` - ${n} removido(s)`,
2027
+ countRenamed: (n) => ` → ${n} renomeado(s)`,
2028
+ skeletonPurpose: (changeName) => `A definir - criado ao arquivar alteração ${changeName}. Atualize o Purpose após o arquivamento.`,
2029
+ changeNotFound: (changeName) => `Alteração '${changeName}' não encontrada.`,
2030
+ validationErrorsInRebuiltSpec: (specName, errors) => `Erros de validação na especificação reconstruída para ${specName}:\n${errors}`,
2031
+ };
2032
+ // ═══════════════════════════════════════════════════════════
2033
+ // Core — Project Config (src/core/project-config.ts)
2034
+ // ═══════════════════════════════════════════════════════════
2035
+ export const PROJECT_CONFIG_SUGGEST_MESSAGES = {
2036
+ configNotValidYaml: 'openspec/config.yaml não é um objeto YAML válido',
2037
+ configFailedToParse: 'Falha ao analisar openspec/config.yaml:',
2038
+ unknownArtifactId: (artifactId, schemaName, validIds) => `ID de artefato desconhecido nas regras: "${artifactId}". IDs válidos para o schema "${schemaName}": ${validIds}`,
2039
+ schemaNotFound: (schemaName) => `Schema '${schemaName}' não encontrado em openspec/config.yaml\n\n`,
2040
+ didYouMean: 'Você quis dizer algum destes?\n',
2041
+ schemaType: (isBuiltIn) => isBuiltIn ? 'nativo' : 'local do projeto',
2042
+ availableSchemas: 'Schemas disponíveis:\n',
2043
+ builtInSchemas: (schemas) => ` Nativos: ${schemas}\n`,
2044
+ projectLocalSchemas: (schemas) => ` Locais do projeto: ${schemas}\n`,
2045
+ noProjectLocalSchemas: ' Locais do projeto: (nenhum encontrado)\n',
2046
+ fixSuggestion: (invalidName) => `\nCorreção: Edite openspec/config.yaml e altere 'schema: ${invalidName}' para um nome de schema válido`,
2047
+ };
2048
+ // ═══════════════════════════════════════════════════════════
2049
+ // Core — Tools Manager (src/core/tools-manager.ts)
2050
+ // ═══════════════════════════════════════════════════════════
2051
+ export const TOOLS_MANAGER_MESSAGES = {
2052
+ toolDoesNotSupportSkills: (toolValue) => `A ferramenta '${toolValue}' não suporta geração de skills.`,
2053
+ };
2054
+ // ═══════════════════════════════════════════════════════════
2055
+ // Core — Artifact Graph (src/core/artifact-graph/)
2056
+ // ═══════════════════════════════════════════════════════════
2057
+ export const ARTIFACT_GRAPH_MESSAGES = {
2058
+ invalidSchema: (errors) => `Schema inválido: ${errors}`,
2059
+ duplicateArtifactId: (id) => `ID de artefato duplicado: ${id}`,
2060
+ invalidDependencyReference: (artifactId, ref) => `Referência de dependência inválida no artefato '${artifactId}': '${ref}' não existe`,
2061
+ cyclicDependency: (cycle) => `Dependência cíclica detectada: ${cycle}`,
2062
+ templateNotFound: (path) => `Template não encontrado: ${path}`,
2063
+ failedToReadTemplate: (error) => `Falha ao ler template: ${error}`,
2064
+ artifactNotFound: (artifactId, schemaName) => `Artefato '${artifactId}' não encontrado no schema '${schemaName}'`,
2065
+ };
2066
+ // ═══════════════════════════════════════════════════════════
2067
+ // Utils — Change Metadata (src/utils/change-metadata.ts)
2068
+ // ═══════════════════════════════════════════════════════════
2069
+ export const CHANGE_METADATA_MESSAGES = {
2070
+ failedToWriteMetadata: (error) => `Falha ao escrever metadados: ${error}`,
2071
+ failedToReadMetadata: (error) => `Falha ao ler metadados: ${error}`,
2072
+ invalidMetadata: (error) => `Metadados inválidos: ${error}`,
2073
+ invalidYaml: (error) => `YAML inválido no arquivo de metadados: ${error}`,
2074
+ unknownSchema: (schema, available) => `Schema desconhecido '${schema}'. Disponíveis: ${available}`,
2075
+ };
2076
+ // ═══════════════════════════════════════════════════════════
2077
+ // Utils — Change Utils (src/utils/change-utils.ts)
2078
+ // ═══════════════════════════════════════════════════════════
2079
+ export const CHANGE_UTILS_MESSAGES = {
2080
+ changeAlreadyExists: (name, dir) => `A alteração '${name}' já existe em ${dir}`,
2081
+ nameEmpty: 'O nome da alteração não pode estar vazio',
2082
+ nameMustBeLowercase: 'O nome da alteração deve ser minúsculo (use kebab-case)',
2083
+ nameNoSpaces: 'O nome da alteração não pode conter espaços (use hífens)',
2084
+ nameNoUnderscores: 'O nome da alteração não pode conter underscores (use hífens)',
2085
+ nameNoStartHyphen: 'O nome da alteração não pode começar com hífen',
2086
+ nameNoEndHyphen: 'O nome da alteração não pode terminar com hífen',
2087
+ nameNoConsecutiveHyphens: 'O nome da alteração não pode conter hífens consecutivos',
2088
+ nameOnlyAllowedChars: 'O nome da alteração pode conter apenas letras minúsculas, números e hífens',
2089
+ nameMustStartWithLetter: 'O nome da alteração deve começar com uma letra',
2090
+ nameKebabCase: 'O nome da alteração deve seguir a convenção kebab-case (ex: add-auth, refactor-db)',
2091
+ };
2092
+ // ═══════════════════════════════════════════════════════════
2093
+ // Core — Completions Factory (src/core/completions/factory.ts)
2094
+ // ═══════════════════════════════════════════════════════════
2095
+ export const COMPLETIONS_FACTORY_MESSAGES = {
2096
+ unsupportedShell: (shell) => `Shell não suportado: ${shell}`,
2097
+ };
1960
2098
  //# sourceMappingURL=index.js.map