@dynamicworks/br-openspec 1.3.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -22
- package/README.md +210 -210
- package/README.pt-BR.md +212 -212
- package/bin/openspec.js +2 -2
- package/dist/commands/feedback.js +4 -4
- package/dist/commands/schema.js +60 -60
- package/dist/core/command-generation/adapters/amazon-q.js +5 -5
- package/dist/core/command-generation/adapters/antigravity.js +5 -5
- package/dist/core/command-generation/adapters/auggie.js +6 -6
- package/dist/core/command-generation/adapters/bob.js +6 -6
- package/dist/core/command-generation/adapters/claude.js +8 -8
- package/dist/core/command-generation/adapters/cline.js +5 -5
- package/dist/core/command-generation/adapters/codebuddy.js +7 -7
- package/dist/core/command-generation/adapters/codex.js +6 -6
- package/dist/core/command-generation/adapters/continue.js +7 -7
- package/dist/core/command-generation/adapters/costrict.js +6 -6
- package/dist/core/command-generation/adapters/crush.js +8 -8
- package/dist/core/command-generation/adapters/cursor.js +8 -8
- package/dist/core/command-generation/adapters/factory.js +6 -6
- package/dist/core/command-generation/adapters/gemini.js +5 -5
- package/dist/core/command-generation/adapters/github-copilot.js +5 -5
- package/dist/core/command-generation/adapters/iflow.js +8 -8
- package/dist/core/command-generation/adapters/junie.js +5 -5
- package/dist/core/command-generation/adapters/kilocode.js +1 -1
- package/dist/core/command-generation/adapters/kiro.js +5 -5
- package/dist/core/command-generation/adapters/lingma.js +8 -8
- package/dist/core/command-generation/adapters/opencode.js +5 -5
- package/dist/core/command-generation/adapters/pi.js +5 -5
- package/dist/core/command-generation/adapters/qoder.js +8 -8
- package/dist/core/command-generation/adapters/qwen.js +5 -5
- package/dist/core/command-generation/adapters/roocode.js +5 -5
- package/dist/core/command-generation/adapters/windsurf.js +8 -8
- package/dist/core/completions/generators/bash-generator.js +41 -41
- package/dist/core/completions/generators/fish-generator.js +7 -7
- package/dist/core/completions/generators/powershell-generator.js +29 -29
- package/dist/core/completions/generators/zsh-generator.js +33 -33
- package/dist/core/completions/templates/bash-templates.js +18 -18
- package/dist/core/completions/templates/fish-templates.js +32 -32
- package/dist/core/completions/templates/powershell-templates.js +19 -19
- package/dist/core/completions/templates/zsh-templates.js +30 -30
- package/dist/core/shared/skill-generation.js +12 -12
- package/dist/core/templates/workflows/apply-change.js +288 -288
- package/dist/core/templates/workflows/archive-change.js +251 -251
- package/dist/core/templates/workflows/bulk-archive-change.js +472 -472
- package/dist/core/templates/workflows/continue-change.js +212 -212
- package/dist/core/templates/workflows/explore.js +443 -443
- package/dist/core/templates/workflows/feedback.js +97 -97
- package/dist/core/templates/workflows/ff-change.js +178 -178
- package/dist/core/templates/workflows/propose.js +196 -196
- package/dist/core/templates/workflows/sync-specs.js +252 -252
- package/dist/core/templates/workflows/upstream-sync.js +93 -93
- package/dist/messages/index.js +977 -977
- package/package.json +82 -84
- package/schemas/spec-driven/schema.yaml +153 -153
- package/schemas/spec-driven/templates/design.md +19 -19
- package/schemas/spec-driven/templates/proposal.md +23 -23
- package/schemas/spec-driven/templates/spec.md +8 -8
- package/schemas/spec-driven/templates/tasks.md +9 -9
- package/scripts/postinstall.js +83 -83
package/dist/messages/index.js
CHANGED
|
@@ -950,132 +950,132 @@ export const PROJECT_CONFIG_MESSAGES = {
|
|
|
950
950
|
// ═══════════════════════════════════════════════════════════
|
|
951
951
|
export const NEW_CHANGE_TEMPLATE_MESSAGES = {
|
|
952
952
|
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
|
|
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
|
|
1015
1015
|
- Passe --schema se estiver usando um workflow não padrão`,
|
|
1016
1016
|
skillCompatibility: 'Requer openspec CLI.',
|
|
1017
1017
|
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
|
|
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
|
|
1079
1079
|
- Passe --schema se estiver usando um workflow não padrão`,
|
|
1080
1080
|
};
|
|
1081
1081
|
// ═══════════════════════════════════════════════════════════
|
|
@@ -1085,548 +1085,548 @@ export const ONBOARD_TEMPLATE_MESSAGES = {
|
|
|
1085
1085
|
skillDescription: 'Onboarding guiado para o BR-OpenSpec - percorra um ciclo completo de workflow com narração e trabalho real na codebase.',
|
|
1086
1086
|
skillCompatibility: 'Requer openspec CLI.',
|
|
1087
1087
|
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
|
|
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
|
|
1630
1630
|
- **Ajuste o escopo gentilmente** - guie para tarefas menores mas respeite a escolha do usuário`,
|
|
1631
1631
|
};
|
|
1632
1632
|
// ═══════════════════════════════════════════════════════════
|
|
@@ -1636,319 +1636,319 @@ export const VERIFY_CHANGE_TEMPLATE_MESSAGES = {
|
|
|
1636
1636
|
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
1637
|
skillCompatibility: 'Requer openspec CLI.',
|
|
1638
1638
|
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
|
|
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
|
|
1795
1795
|
- 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
|
|
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
|
|
1952
1952
|
- Sem sugestões vagas como "consider reviewing"`,
|
|
1953
1953
|
};
|
|
1954
1954
|
// ═══════════════════════════════════════════════════════════
|