@dynamicworks/br-openspec 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +210 -0
- package/README.pt-BR.md +212 -0
- package/bin/openspec.js +3 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +484 -0
- package/dist/commands/change.d.ts +35 -0
- package/dist/commands/change.js +278 -0
- package/dist/commands/completion.d.ts +72 -0
- package/dist/commands/completion.js +258 -0
- package/dist/commands/config.d.ts +36 -0
- package/dist/commands/config.js +553 -0
- package/dist/commands/feedback.d.ts +9 -0
- package/dist/commands/feedback.js +184 -0
- package/dist/commands/schema.d.ts +6 -0
- package/dist/commands/schema.js +869 -0
- package/dist/commands/show.d.ts +14 -0
- package/dist/commands/show.js +133 -0
- package/dist/commands/spec.d.ts +15 -0
- package/dist/commands/spec.js +226 -0
- package/dist/commands/tools.d.ts +11 -0
- package/dist/commands/tools.js +252 -0
- package/dist/commands/validate.d.ts +24 -0
- package/dist/commands/validate.js +295 -0
- package/dist/commands/workflow/index.d.ts +17 -0
- package/dist/commands/workflow/index.js +12 -0
- package/dist/commands/workflow/instructions.d.ts +29 -0
- package/dist/commands/workflow/instructions.js +328 -0
- package/dist/commands/workflow/new-change.d.ts +11 -0
- package/dist/commands/workflow/new-change.js +44 -0
- package/dist/commands/workflow/schemas.d.ts +10 -0
- package/dist/commands/workflow/schemas.js +35 -0
- package/dist/commands/workflow/shared.d.ts +57 -0
- package/dist/commands/workflow/shared.js +117 -0
- package/dist/commands/workflow/status.d.ts +14 -0
- package/dist/commands/workflow/status.js +76 -0
- package/dist/commands/workflow/templates.d.ts +16 -0
- package/dist/commands/workflow/templates.js +70 -0
- package/dist/core/archive.d.ts +11 -0
- package/dist/core/archive.js +322 -0
- package/dist/core/artifact-graph/graph.d.ts +56 -0
- package/dist/core/artifact-graph/graph.js +141 -0
- package/dist/core/artifact-graph/index.d.ts +8 -0
- package/dist/core/artifact-graph/index.js +14 -0
- package/dist/core/artifact-graph/instruction-loader.d.ts +143 -0
- package/dist/core/artifact-graph/instruction-loader.js +217 -0
- package/dist/core/artifact-graph/outputs.d.ts +14 -0
- package/dist/core/artifact-graph/outputs.js +39 -0
- package/dist/core/artifact-graph/resolver.d.ts +81 -0
- package/dist/core/artifact-graph/resolver.js +258 -0
- package/dist/core/artifact-graph/schema.d.ts +13 -0
- package/dist/core/artifact-graph/schema.js +108 -0
- package/dist/core/artifact-graph/state.d.ts +12 -0
- package/dist/core/artifact-graph/state.js +31 -0
- package/dist/core/artifact-graph/types.d.ts +45 -0
- package/dist/core/artifact-graph/types.js +43 -0
- package/dist/core/available-tools.d.ts +17 -0
- package/dist/core/available-tools.js +43 -0
- package/dist/core/command-generation/adapters/amazon-q.d.ts +13 -0
- package/dist/core/command-generation/adapters/amazon-q.js +26 -0
- package/dist/core/command-generation/adapters/antigravity.d.ts +13 -0
- package/dist/core/command-generation/adapters/antigravity.js +26 -0
- package/dist/core/command-generation/adapters/auggie.d.ts +13 -0
- package/dist/core/command-generation/adapters/auggie.js +27 -0
- package/dist/core/command-generation/adapters/bob.d.ts +14 -0
- package/dist/core/command-generation/adapters/bob.js +45 -0
- package/dist/core/command-generation/adapters/claude.d.ts +13 -0
- package/dist/core/command-generation/adapters/claude.js +50 -0
- package/dist/core/command-generation/adapters/cline.d.ts +14 -0
- package/dist/core/command-generation/adapters/cline.js +27 -0
- package/dist/core/command-generation/adapters/codebuddy.d.ts +13 -0
- package/dist/core/command-generation/adapters/codebuddy.js +28 -0
- package/dist/core/command-generation/adapters/codex.d.ts +16 -0
- package/dist/core/command-generation/adapters/codex.js +39 -0
- package/dist/core/command-generation/adapters/continue.d.ts +13 -0
- package/dist/core/command-generation/adapters/continue.js +28 -0
- package/dist/core/command-generation/adapters/costrict.d.ts +13 -0
- package/dist/core/command-generation/adapters/costrict.js +27 -0
- package/dist/core/command-generation/adapters/crush.d.ts +13 -0
- package/dist/core/command-generation/adapters/crush.js +30 -0
- package/dist/core/command-generation/adapters/cursor.d.ts +14 -0
- package/dist/core/command-generation/adapters/cursor.js +44 -0
- package/dist/core/command-generation/adapters/factory.d.ts +13 -0
- package/dist/core/command-generation/adapters/factory.js +27 -0
- package/dist/core/command-generation/adapters/gemini.d.ts +13 -0
- package/dist/core/command-generation/adapters/gemini.js +26 -0
- package/dist/core/command-generation/adapters/github-copilot.d.ts +13 -0
- package/dist/core/command-generation/adapters/github-copilot.js +26 -0
- package/dist/core/command-generation/adapters/iflow.d.ts +13 -0
- package/dist/core/command-generation/adapters/iflow.js +29 -0
- package/dist/core/command-generation/adapters/index.d.ts +32 -0
- package/dist/core/command-generation/adapters/index.js +32 -0
- package/dist/core/command-generation/adapters/junie.d.ts +13 -0
- package/dist/core/command-generation/adapters/junie.js +26 -0
- package/dist/core/command-generation/adapters/kilocode.d.ts +14 -0
- package/dist/core/command-generation/adapters/kilocode.js +23 -0
- package/dist/core/command-generation/adapters/kiro.d.ts +13 -0
- package/dist/core/command-generation/adapters/kiro.js +26 -0
- package/dist/core/command-generation/adapters/lingma.d.ts +13 -0
- package/dist/core/command-generation/adapters/lingma.js +30 -0
- package/dist/core/command-generation/adapters/opencode.d.ts +13 -0
- package/dist/core/command-generation/adapters/opencode.js +29 -0
- package/dist/core/command-generation/adapters/pi.d.ts +18 -0
- package/dist/core/command-generation/adapters/pi.js +55 -0
- package/dist/core/command-generation/adapters/qoder.d.ts +13 -0
- package/dist/core/command-generation/adapters/qoder.js +30 -0
- package/dist/core/command-generation/adapters/qwen.d.ts +13 -0
- package/dist/core/command-generation/adapters/qwen.js +26 -0
- package/dist/core/command-generation/adapters/roocode.d.ts +14 -0
- package/dist/core/command-generation/adapters/roocode.js +27 -0
- package/dist/core/command-generation/adapters/windsurf.d.ts +14 -0
- package/dist/core/command-generation/adapters/windsurf.js +51 -0
- package/dist/core/command-generation/generator.d.ts +21 -0
- package/dist/core/command-generation/generator.js +27 -0
- package/dist/core/command-generation/index.d.ts +22 -0
- package/dist/core/command-generation/index.js +24 -0
- package/dist/core/command-generation/registry.d.ts +36 -0
- package/dist/core/command-generation/registry.js +98 -0
- package/dist/core/command-generation/types.d.ts +56 -0
- package/dist/core/command-generation/types.js +8 -0
- package/dist/core/completions/command-registry.d.ts +7 -0
- package/dist/core/completions/command-registry.js +462 -0
- package/dist/core/completions/completion-provider.d.ts +60 -0
- package/dist/core/completions/completion-provider.js +102 -0
- package/dist/core/completions/factory.d.ts +64 -0
- package/dist/core/completions/factory.js +75 -0
- package/dist/core/completions/generators/bash-generator.d.ts +32 -0
- package/dist/core/completions/generators/bash-generator.js +174 -0
- package/dist/core/completions/generators/fish-generator.d.ts +32 -0
- package/dist/core/completions/generators/fish-generator.js +157 -0
- package/dist/core/completions/generators/powershell-generator.d.ts +33 -0
- package/dist/core/completions/generators/powershell-generator.js +208 -0
- package/dist/core/completions/generators/zsh-generator.d.ts +44 -0
- package/dist/core/completions/generators/zsh-generator.js +250 -0
- package/dist/core/completions/installers/bash-installer.d.ts +87 -0
- package/dist/core/completions/installers/bash-installer.js +319 -0
- package/dist/core/completions/installers/fish-installer.d.ts +43 -0
- package/dist/core/completions/installers/fish-installer.js +143 -0
- package/dist/core/completions/installers/powershell-installer.d.ts +102 -0
- package/dist/core/completions/installers/powershell-installer.js +400 -0
- package/dist/core/completions/installers/zsh-installer.d.ts +125 -0
- package/dist/core/completions/installers/zsh-installer.js +450 -0
- package/dist/core/completions/templates/bash-templates.d.ts +6 -0
- package/dist/core/completions/templates/bash-templates.js +24 -0
- package/dist/core/completions/templates/fish-templates.d.ts +7 -0
- package/dist/core/completions/templates/fish-templates.js +39 -0
- package/dist/core/completions/templates/powershell-templates.d.ts +6 -0
- package/dist/core/completions/templates/powershell-templates.js +25 -0
- package/dist/core/completions/templates/zsh-templates.d.ts +6 -0
- package/dist/core/completions/templates/zsh-templates.js +36 -0
- package/dist/core/completions/types.d.ts +79 -0
- package/dist/core/completions/types.js +2 -0
- package/dist/core/config-prompts.d.ts +9 -0
- package/dist/core/config-prompts.js +34 -0
- package/dist/core/config-schema.d.ts +86 -0
- package/dist/core/config-schema.js +213 -0
- package/dist/core/config.d.ts +18 -0
- package/dist/core/config.js +38 -0
- package/dist/core/converters/json-converter.d.ts +6 -0
- package/dist/core/converters/json-converter.js +51 -0
- package/dist/core/global-config.d.ts +44 -0
- package/dist/core/global-config.js +125 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +3 -0
- package/dist/core/init.d.ts +37 -0
- package/dist/core/init.js +549 -0
- package/dist/core/is-project-initialized.d.ts +12 -0
- package/dist/core/is-project-initialized.js +18 -0
- package/dist/core/legacy-cleanup.d.ts +162 -0
- package/dist/core/legacy-cleanup.js +515 -0
- package/dist/core/list.d.ts +9 -0
- package/dist/core/list.js +172 -0
- package/dist/core/migration.d.ts +23 -0
- package/dist/core/migration.js +109 -0
- package/dist/core/parsers/change-parser.d.ts +13 -0
- package/dist/core/parsers/change-parser.js +197 -0
- package/dist/core/parsers/markdown-parser.d.ts +26 -0
- package/dist/core/parsers/markdown-parser.js +228 -0
- package/dist/core/parsers/requirement-blocks.d.ts +37 -0
- package/dist/core/parsers/requirement-blocks.js +201 -0
- package/dist/core/parsers/spec-structure.d.ts +9 -0
- package/dist/core/parsers/spec-structure.js +88 -0
- package/dist/core/profile-sync-drift.d.ts +38 -0
- package/dist/core/profile-sync-drift.js +200 -0
- package/dist/core/profiles.d.ts +26 -0
- package/dist/core/profiles.js +40 -0
- package/dist/core/project-config.d.ts +64 -0
- package/dist/core/project-config.js +224 -0
- package/dist/core/schemas/base.schema.d.ts +13 -0
- package/dist/core/schemas/base.schema.js +13 -0
- package/dist/core/schemas/change.schema.d.ts +73 -0
- package/dist/core/schemas/change.schema.js +31 -0
- package/dist/core/schemas/index.d.ts +4 -0
- package/dist/core/schemas/index.js +4 -0
- package/dist/core/schemas/spec.schema.d.ts +18 -0
- package/dist/core/schemas/spec.schema.js +15 -0
- package/dist/core/shared/index.d.ts +8 -0
- package/dist/core/shared/index.js +8 -0
- package/dist/core/shared/skill-generation.d.ts +49 -0
- package/dist/core/shared/skill-generation.js +96 -0
- package/dist/core/shared/tool-detection.d.ts +71 -0
- package/dist/core/shared/tool-detection.js +158 -0
- package/dist/core/specs-apply.d.ts +73 -0
- package/dist/core/specs-apply.js +393 -0
- package/dist/core/styles/palette.d.ts +7 -0
- package/dist/core/styles/palette.js +8 -0
- package/dist/core/templates/index.d.ts +8 -0
- package/dist/core/templates/index.js +9 -0
- package/dist/core/templates/skill-templates.d.ts +20 -0
- package/dist/core/templates/skill-templates.js +19 -0
- package/dist/core/templates/types.d.ts +19 -0
- package/dist/core/templates/types.js +5 -0
- package/dist/core/templates/workflows/apply-change.d.ts +10 -0
- package/dist/core/templates/workflows/apply-change.js +308 -0
- package/dist/core/templates/workflows/archive-change.d.ts +10 -0
- package/dist/core/templates/workflows/archive-change.js +271 -0
- package/dist/core/templates/workflows/bulk-archive-change.d.ts +10 -0
- package/dist/core/templates/workflows/bulk-archive-change.js +492 -0
- package/dist/core/templates/workflows/continue-change.d.ts +10 -0
- package/dist/core/templates/workflows/continue-change.js +232 -0
- package/dist/core/templates/workflows/explore.d.ts +10 -0
- package/dist/core/templates/workflows/explore.js +463 -0
- package/dist/core/templates/workflows/feedback.d.ts +9 -0
- package/dist/core/templates/workflows/feedback.js +108 -0
- package/dist/core/templates/workflows/ff-change.d.ts +10 -0
- package/dist/core/templates/workflows/ff-change.js +198 -0
- package/dist/core/templates/workflows/new-change.d.ts +10 -0
- package/dist/core/templates/workflows/new-change.js +21 -0
- package/dist/core/templates/workflows/onboard.d.ts +10 -0
- package/dist/core/templates/workflows/onboard.js +21 -0
- package/dist/core/templates/workflows/propose.d.ts +10 -0
- package/dist/core/templates/workflows/propose.js +216 -0
- package/dist/core/templates/workflows/sync-specs.d.ts +10 -0
- package/dist/core/templates/workflows/sync-specs.js +272 -0
- package/dist/core/templates/workflows/upstream-sync.d.ts +10 -0
- package/dist/core/templates/workflows/upstream-sync.js +116 -0
- package/dist/core/templates/workflows/verify-change.d.ts +10 -0
- package/dist/core/templates/workflows/verify-change.js +21 -0
- package/dist/core/tools-manager.d.ts +56 -0
- package/dist/core/tools-manager.js +215 -0
- package/dist/core/update.d.ts +77 -0
- package/dist/core/update.js +538 -0
- package/dist/core/validation/constants.d.ts +34 -0
- package/dist/core/validation/constants.js +40 -0
- package/dist/core/validation/types.d.ts +18 -0
- package/dist/core/validation/types.js +2 -0
- package/dist/core/validation/validator.d.ts +33 -0
- package/dist/core/validation/validator.js +419 -0
- package/dist/core/view.d.ts +8 -0
- package/dist/core/view.js +169 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/messages/index.d.ts +867 -0
- package/dist/messages/index.js +1960 -0
- package/dist/prompts/searchable-multi-select.d.ts +28 -0
- package/dist/prompts/searchable-multi-select.js +160 -0
- package/dist/telemetry/config.d.ts +38 -0
- package/dist/telemetry/config.js +136 -0
- package/dist/telemetry/index.d.ts +31 -0
- package/dist/telemetry/index.js +165 -0
- package/dist/ui/ascii-patterns.d.ts +16 -0
- package/dist/ui/ascii-patterns.js +133 -0
- package/dist/ui/welcome-screen.d.ts +10 -0
- package/dist/ui/welcome-screen.js +147 -0
- package/dist/utils/change-metadata.d.ts +51 -0
- package/dist/utils/change-metadata.js +147 -0
- package/dist/utils/change-utils.d.ts +62 -0
- package/dist/utils/change-utils.js +121 -0
- package/dist/utils/command-references.d.ts +18 -0
- package/dist/utils/command-references.js +20 -0
- package/dist/utils/file-system.d.ts +41 -0
- package/dist/utils/file-system.js +302 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/interactive.d.ts +18 -0
- package/dist/utils/interactive.js +21 -0
- package/dist/utils/item-discovery.d.ts +4 -0
- package/dist/utils/item-discovery.js +72 -0
- package/dist/utils/match.d.ts +3 -0
- package/dist/utils/match.js +22 -0
- package/dist/utils/shell-detection.d.ts +20 -0
- package/dist/utils/shell-detection.js +41 -0
- package/dist/utils/task-progress.d.ts +8 -0
- package/dist/utils/task-progress.js +37 -0
- package/package.json +84 -0
- package/schemas/spec-driven/schema.yaml +153 -0
- package/schemas/spec-driven/templates/design.md +19 -0
- package/schemas/spec-driven/templates/proposal.md +23 -0
- package/schemas/spec-driven/templates/spec.md +8 -0
- package/schemas/spec-driven/templates/tasks.md +9 -0
- package/scripts/postinstall.js +83 -0
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
export function getBulkArchiveChangeSkillTemplate() {
|
|
2
|
+
return {
|
|
3
|
+
name: 'openspec-bulk-archive-change',
|
|
4
|
+
description: 'Arquiva múltiplas changes concluídas de uma vez. Use ao arquivar várias changes paralelas.',
|
|
5
|
+
instructions: `Arquiva múltiplas changes concluídas em uma única operação.
|
|
6
|
+
|
|
7
|
+
Esta skill permite arquivar changes em lote, tratando conflitos de specs de forma inteligente verificando a codebase para determinar o que está realmente implementado.
|
|
8
|
+
|
|
9
|
+
**Entrada**: Nenhuma necessária (solicita seleção)
|
|
10
|
+
|
|
11
|
+
**Passos**
|
|
12
|
+
|
|
13
|
+
1. **Obtenha as changes ativas**
|
|
14
|
+
|
|
15
|
+
Execute \`openspec list --json\` para obter todas as changes ativas.
|
|
16
|
+
|
|
17
|
+
Se não existirem changes ativas, informe o usuário e pare.
|
|
18
|
+
|
|
19
|
+
2. **Solicite a seleção de changes**
|
|
20
|
+
|
|
21
|
+
Use a ferramenta **AskUserQuestion** com multi-seleção para permitir que o usuário escolha as changes:
|
|
22
|
+
- Mostre cada change com seu schema
|
|
23
|
+
- Inclua uma opção para "Todas as changes"
|
|
24
|
+
- Permita qualquer número de seleções (1+ funciona, 2+ é o caso típico)
|
|
25
|
+
|
|
26
|
+
**IMPORTANTE**: NÃO selecione automaticamente. Sempre deixe o usuário escolher.
|
|
27
|
+
|
|
28
|
+
3. **Validação em lote - colete o status de todas as changes selecionadas**
|
|
29
|
+
|
|
30
|
+
Para cada change selecionada, colete:
|
|
31
|
+
|
|
32
|
+
a. **Status dos artifacts** - Execute \`openspec status --change "<nome>" --json\`
|
|
33
|
+
- Analise \`schemaName\` e lista de \`artifacts\`
|
|
34
|
+
- Note quais artifacts estão \`done\` vs outros estados
|
|
35
|
+
|
|
36
|
+
b. **Conclusão de tarefas** - Leia \`openspec/changes/<nome>/tasks.md\`
|
|
37
|
+
- Conte \`- [ ]\` (incompleto) vs \`- [x]\` (concluído)
|
|
38
|
+
- Se não existir arquivo de tasks, note como "Sem tarefas"
|
|
39
|
+
|
|
40
|
+
c. **Delta specs** - Verifique o diretório \`openspec/changes/<nome>/specs/\`
|
|
41
|
+
- Liste quais capability specs existem
|
|
42
|
+
- Para cada um, extraia os nomes dos requisitos (linhas correspondentes a \`### Requirement: <nome>\`)
|
|
43
|
+
|
|
44
|
+
4. **Detecte conflitos de specs**
|
|
45
|
+
|
|
46
|
+
Construa um mapa de \`capability -> [changes que a tocam]\`:
|
|
47
|
+
|
|
48
|
+
\`\`\`
|
|
49
|
+
auth -> [change-a, change-b] <- CONFLITO (2+ changes)
|
|
50
|
+
api -> [change-c] <- OK (apenas 1 change)
|
|
51
|
+
\`\`\`
|
|
52
|
+
|
|
53
|
+
Um conflito existe quando 2+ changes selecionadas têm delta specs para a mesma capability.
|
|
54
|
+
|
|
55
|
+
5. **Resolva conflitos de forma agentica**
|
|
56
|
+
|
|
57
|
+
**Para cada conflito**, investigue a codebase:
|
|
58
|
+
|
|
59
|
+
a. **Leia os delta specs** de cada change conflitante para entender o que cada uma pretende adicionar/modificar
|
|
60
|
+
|
|
61
|
+
b. **Pesquise a codebase** por evidências de implementação:
|
|
62
|
+
- Procure por código implementando requisitos de cada delta spec
|
|
63
|
+
- Verifique arquivos, funções ou testes relacionados
|
|
64
|
+
|
|
65
|
+
c. **Determine a resolução**:
|
|
66
|
+
- Se apenas uma change está realmente implementada -> sincronize os specs dessa
|
|
67
|
+
- Se ambas estão implementadas -> aplique em ordem cronológica (mais antiga primeiro, mais recente sobrescreve)
|
|
68
|
+
- Se nenhuma está implementada -> ignore o sync de specs, avise o usuário
|
|
69
|
+
|
|
70
|
+
d. **Registre a resolução** para cada conflito:
|
|
71
|
+
- Quais specs de qual change aplicar
|
|
72
|
+
- Em qual ordem (se ambas)
|
|
73
|
+
- Racional (o que foi encontrado na codebase)
|
|
74
|
+
|
|
75
|
+
6. **Mostre a tabela de status consolidada**
|
|
76
|
+
|
|
77
|
+
Exiba uma tabela resumindo todas as changes:
|
|
78
|
+
|
|
79
|
+
\`\`\`
|
|
80
|
+
| Change | Artifacts | Tarefas | Specs | Conflitos | Status |
|
|
81
|
+
|---------------------|-----------|---------|---------|-----------|--------|
|
|
82
|
+
| schema-management | Done | 5/5 | 2 delta | Nenhum | Pronto |
|
|
83
|
+
| project-config | Done | 3/3 | 1 delta | Nenhum | Pronto |
|
|
84
|
+
| add-oauth | Done | 4/4 | 1 delta | auth (!) | Pronto*|
|
|
85
|
+
| add-verify-skill | 1 restante| 2/5 | Nenhum | Nenhum | Aviso |
|
|
86
|
+
\`\`\`
|
|
87
|
+
|
|
88
|
+
Para conflitos, mostre a resolução:
|
|
89
|
+
\`\`\`
|
|
90
|
+
* Resolução de conflito:
|
|
91
|
+
- auth spec: Aplicará add-oauth depois add-jwt (ambas implementadas, ordem cronológica)
|
|
92
|
+
\`\`\`
|
|
93
|
+
|
|
94
|
+
Para changes incompletas, mostre avisos:
|
|
95
|
+
\`\`\`
|
|
96
|
+
Avisos:
|
|
97
|
+
- add-verify-skill: 1 artifact incompleto, 3 tarefas incompletas
|
|
98
|
+
\`\`\`
|
|
99
|
+
|
|
100
|
+
7. **Confirme a operação em lote**
|
|
101
|
+
|
|
102
|
+
Use a ferramenta **AskUserQuestion** com uma única confirmação:
|
|
103
|
+
|
|
104
|
+
- "Arquivar N changes?" com opções baseadas no status
|
|
105
|
+
- As opções podem incluir:
|
|
106
|
+
- "Arquivar todas as N changes"
|
|
107
|
+
- "Arquivar apenas as N changes prontas (ignorar incompletas)"
|
|
108
|
+
- "Cancelar"
|
|
109
|
+
|
|
110
|
+
Se houver changes incompletas, deixe claro que elas serão arquivadas com avisos.
|
|
111
|
+
|
|
112
|
+
8. **Execute o arquivamento para cada change confirmada**
|
|
113
|
+
|
|
114
|
+
Processe as changes na ordem determinada (respeitando a resolução de conflitos):
|
|
115
|
+
|
|
116
|
+
a. **Sincronize specs** se delta specs existirem:
|
|
117
|
+
- Use a abordagem openspec-sync-specs (merge inteligente agent-driven)
|
|
118
|
+
- Para conflitos, aplique na ordem resolvida
|
|
119
|
+
- Rastreie se o sync foi feito
|
|
120
|
+
|
|
121
|
+
b. **Realize o arquivamento**:
|
|
122
|
+
\`\`\`bash
|
|
123
|
+
openspec archive <nome>
|
|
124
|
+
\`\`\`
|
|
125
|
+
|
|
126
|
+
Se precisar manipular programaticamente, construa os caminhos com \`path.join()\`
|
|
127
|
+
ou \`path.resolve()\` e use \`fs.rename()\` — evite comandos shell e separadores \`/\` hardcoded.
|
|
128
|
+
|
|
129
|
+
c. **Rastreie o resultado** para cada change:
|
|
130
|
+
- Sucesso: arquivado com sucesso
|
|
131
|
+
- Falha: erro durante o arquivamento (registre o erro)
|
|
132
|
+
- Ignorado: usuário escolheu não arquivar (se aplicável)
|
|
133
|
+
|
|
134
|
+
9. **Exiba o resumo**
|
|
135
|
+
|
|
136
|
+
Mostre os resultados finais:
|
|
137
|
+
|
|
138
|
+
\`\`\`
|
|
139
|
+
## Arquivamento em Lote Concluído
|
|
140
|
+
|
|
141
|
+
3 changes arquivadas:
|
|
142
|
+
- schema-management-cli -> archive/2026-01-19-schema-management-cli/
|
|
143
|
+
- project-config -> archive/2026-01-19-project-config/
|
|
144
|
+
- add-oauth -> archive/2026-01-19-add-oauth/
|
|
145
|
+
|
|
146
|
+
1 change ignorada:
|
|
147
|
+
- add-verify-skill (usuário escolheu não arquivar incompleta)
|
|
148
|
+
|
|
149
|
+
Resumo de sync de specs:
|
|
150
|
+
- 4 delta specs sincronizados com os specs principais
|
|
151
|
+
- 1 conflito resolvido (auth: aplicadas ambas em ordem cronológica)
|
|
152
|
+
\`\`\`
|
|
153
|
+
|
|
154
|
+
Se houver falhas:
|
|
155
|
+
\`\`\`
|
|
156
|
+
1 change falhou:
|
|
157
|
+
- some-change: O diretório de arquivo já existe
|
|
158
|
+
\`\`\`
|
|
159
|
+
|
|
160
|
+
**Exemplos de Resolução de Conflitos**
|
|
161
|
+
|
|
162
|
+
Exemplo 1: Apenas uma implementada
|
|
163
|
+
\`\`\`
|
|
164
|
+
Conflito: specs/auth/spec.md tocado por [add-oauth, add-jwt]
|
|
165
|
+
|
|
166
|
+
Verificando add-oauth:
|
|
167
|
+
- Delta adiciona requisito "OAuth Provider Integration"
|
|
168
|
+
- Pesquisando codebase... encontrado src/auth/oauth.ts implementando fluxo OAuth
|
|
169
|
+
|
|
170
|
+
Verificando add-jwt:
|
|
171
|
+
- Delta adiciona requisito "JWT Token Handling"
|
|
172
|
+
- Pesquisando codebase... nenhuma implementação JWT encontrada
|
|
173
|
+
|
|
174
|
+
Resolução: Apenas add-oauth está implementada. Sincronizará apenas os specs de add-oauth.
|
|
175
|
+
\`\`\`
|
|
176
|
+
|
|
177
|
+
Exemplo 2: Ambas implementadas
|
|
178
|
+
\`\`\`
|
|
179
|
+
Conflito: specs/api/spec.md tocado por [add-rest-api, add-graphql]
|
|
180
|
+
|
|
181
|
+
Verificando add-rest-api (criada 2026-01-10):
|
|
182
|
+
- Delta adiciona requisito "REST Endpoints"
|
|
183
|
+
- Pesquisando codebase... encontrado src/api/rest.ts
|
|
184
|
+
|
|
185
|
+
Verificando add-graphql (criada 2026-01-15):
|
|
186
|
+
- Delta adiciona requisito "GraphQL Schema"
|
|
187
|
+
- Pesquisando codebase... encontrado src/api/graphql.ts
|
|
188
|
+
|
|
189
|
+
Resolução: Ambas implementadas. Aplicará specs de add-rest-api primeiro,
|
|
190
|
+
depois specs de add-graphql (ordem cronológica, mais recente tem precedência).
|
|
191
|
+
\`\`\`
|
|
192
|
+
|
|
193
|
+
**Saída em Sucesso**
|
|
194
|
+
|
|
195
|
+
\`\`\`
|
|
196
|
+
## Arquivamento em Lote Concluído
|
|
197
|
+
|
|
198
|
+
N changes arquivadas:
|
|
199
|
+
- <change-1> -> archive/YYYY-MM-DD-<change-1>/
|
|
200
|
+
- <change-2> -> archive/YYYY-MM-DD-<change-2>/
|
|
201
|
+
|
|
202
|
+
Resumo de sync de specs:
|
|
203
|
+
- N delta specs sincronizados com os specs principais
|
|
204
|
+
- Nenhum conflito (ou: M conflitos resolvidos)
|
|
205
|
+
\`\`\`
|
|
206
|
+
|
|
207
|
+
**Saída em Sucesso Parcial**
|
|
208
|
+
|
|
209
|
+
\`\`\`
|
|
210
|
+
## Arquivamento em Lote Concluído (parcial)
|
|
211
|
+
|
|
212
|
+
N changes arquivadas:
|
|
213
|
+
- <change-1> -> archive/YYYY-MM-DD-<change-1>/
|
|
214
|
+
|
|
215
|
+
M changes ignoradas:
|
|
216
|
+
- <change-2> (usuário escolheu não arquivar incompleta)
|
|
217
|
+
|
|
218
|
+
K changes falharam:
|
|
219
|
+
- <change-3>: O diretório de arquivo já existe
|
|
220
|
+
\`\`\`
|
|
221
|
+
|
|
222
|
+
**Saída Quando Não Há Changes**
|
|
223
|
+
|
|
224
|
+
\`\`\`
|
|
225
|
+
## Nenhuma Change para Arquivar
|
|
226
|
+
|
|
227
|
+
Nenhuma change ativa encontrada. Crie uma nova change para começar.
|
|
228
|
+
\`\`\`
|
|
229
|
+
|
|
230
|
+
**Guardrails**
|
|
231
|
+
- Permita qualquer número de changes (1+ está ok, 2+ é o caso típico)
|
|
232
|
+
- Sempre solicite seleção, nunca selecione automaticamente
|
|
233
|
+
- Detecte conflitos de specs cedo e resolva verificando a codebase
|
|
234
|
+
- Quando ambas as changes estiverem implementadas, aplique specs em ordem cronológica
|
|
235
|
+
- Ignore o sync de specs apenas quando a implementação estiver ausente (avise o usuário)
|
|
236
|
+
- Mostre o status claro por change antes de confirmar
|
|
237
|
+
- Use uma única confirmação para todo o lote
|
|
238
|
+
- Rastreie e reporte todos os resultados (sucesso/ignorado/falha)
|
|
239
|
+
- Preservar .openspec.yaml ao mover para o arquivo
|
|
240
|
+
- O diretório de destino do arquivo usa a data atual: YYYY-MM-DD-<nome>
|
|
241
|
+
- Se o destino do arquivo existir, falhe aquela change mas continue com as outras`,
|
|
242
|
+
license: 'MIT',
|
|
243
|
+
compatibility: 'Requer openspec CLI.',
|
|
244
|
+
metadata: { author: 'openspec', version: '1.0' },
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
export function getOpsxBulkArchiveCommandTemplate() {
|
|
248
|
+
return {
|
|
249
|
+
name: 'OPSX: Bulk Archive',
|
|
250
|
+
description: 'Arquiva múltiplas changes concluídas de uma vez',
|
|
251
|
+
category: 'Workflow',
|
|
252
|
+
tags: ['workflow', 'archive', 'experimental', 'bulk'],
|
|
253
|
+
content: `Arquiva múltiplas changes concluídas em uma única operação.
|
|
254
|
+
|
|
255
|
+
Esta skill permite arquivar changes em lote, tratando conflitos de specs de forma inteligente verificando a codebase para determinar o que está realmente implementado.
|
|
256
|
+
|
|
257
|
+
**Entrada**: Nenhuma necessária (solicita seleção)
|
|
258
|
+
|
|
259
|
+
**Passos**
|
|
260
|
+
|
|
261
|
+
1. **Obtenha as changes ativas**
|
|
262
|
+
|
|
263
|
+
Execute \`openspec list --json\` para obter todas as changes ativas.
|
|
264
|
+
|
|
265
|
+
Se não existirem changes ativas, informe o usuário e pare.
|
|
266
|
+
|
|
267
|
+
2. **Solicite a seleção de changes**
|
|
268
|
+
|
|
269
|
+
Use a ferramenta **AskUserQuestion** com multi-seleção para permitir que o usuário escolha as changes:
|
|
270
|
+
- Mostre cada change com seu schema
|
|
271
|
+
- Inclua uma opção para "Todas as changes"
|
|
272
|
+
- Permita qualquer número de seleções (1+ funciona, 2+ é o caso típico)
|
|
273
|
+
|
|
274
|
+
**IMPORTANTE**: NÃO selecione automaticamente. Sempre deixe o usuário escolher.
|
|
275
|
+
|
|
276
|
+
3. **Validação em lote - colete o status de todas as changes selecionadas**
|
|
277
|
+
|
|
278
|
+
Para cada change selecionada, colete:
|
|
279
|
+
|
|
280
|
+
a. **Status dos artifacts** - Execute \`openspec status --change "<nome>" --json\`
|
|
281
|
+
- Analise \`schemaName\` e lista de \`artifacts\`
|
|
282
|
+
- Note quais artifacts estão \`done\` vs outros estados
|
|
283
|
+
|
|
284
|
+
b. **Conclusão de tarefas** - Leia \`openspec/changes/<nome>/tasks.md\`
|
|
285
|
+
- Conte \`- [ ]\` (incompleto) vs \`- [x]\` (concluído)
|
|
286
|
+
- Se não existir arquivo de tasks, note como "Sem tarefas"
|
|
287
|
+
|
|
288
|
+
c. **Delta specs** - Verifique o diretório \`openspec/changes/<nome>/specs/\`
|
|
289
|
+
- Liste quais capability specs existem
|
|
290
|
+
- Para cada um, extraia os nomes dos requisitos (linhas correspondentes a \`### Requirement: <nome>\`)
|
|
291
|
+
|
|
292
|
+
4. **Detecte conflitos de specs**
|
|
293
|
+
|
|
294
|
+
Construa um mapa de \`capability -> [changes que a tocam]\`:
|
|
295
|
+
|
|
296
|
+
\`\`\`
|
|
297
|
+
auth -> [change-a, change-b] <- CONFLITO (2+ changes)
|
|
298
|
+
api -> [change-c] <- OK (apenas 1 change)
|
|
299
|
+
\`\`\`
|
|
300
|
+
|
|
301
|
+
Um conflito existe quando 2+ changes selecionadas têm delta specs para a mesma capability.
|
|
302
|
+
|
|
303
|
+
5. **Resolva conflitos de forma agentica**
|
|
304
|
+
|
|
305
|
+
**Para cada conflito**, investigue a codebase:
|
|
306
|
+
|
|
307
|
+
a. **Leia os delta specs** de cada change conflitante para entender o que cada uma pretende adicionar/modificar
|
|
308
|
+
|
|
309
|
+
b. **Pesquise a codebase** por evidências de implementação:
|
|
310
|
+
- Procure por código implementando requisitos de cada delta spec
|
|
311
|
+
- Verifique arquivos, funções ou testes relacionados
|
|
312
|
+
|
|
313
|
+
c. **Determine a resolução**:
|
|
314
|
+
- Se apenas uma change está realmente implementada -> sincronize os specs dessa
|
|
315
|
+
- Se ambas estão implementadas -> aplique em ordem cronológica (mais antiga primeiro, mais recente sobrescreve)
|
|
316
|
+
- Se nenhuma está implementada -> ignore o sync de specs, avise o usuário
|
|
317
|
+
|
|
318
|
+
d. **Registre a resolução** para cada conflito:
|
|
319
|
+
- Quais specs de qual change aplicar
|
|
320
|
+
- Em qual ordem (se ambas)
|
|
321
|
+
- Racional (o que foi encontrado na codebase)
|
|
322
|
+
|
|
323
|
+
6. **Mostre a tabela de status consolidada**
|
|
324
|
+
|
|
325
|
+
Exiba uma tabela resumindo todas as changes:
|
|
326
|
+
|
|
327
|
+
\`\`\`
|
|
328
|
+
| Change | Artifacts | Tarefas | Specs | Conflitos | Status |
|
|
329
|
+
|---------------------|-----------|---------|---------|-----------|--------|
|
|
330
|
+
| schema-management | Done | 5/5 | 2 delta | Nenhum | Pronto |
|
|
331
|
+
| project-config | Done | 3/3 | 1 delta | Nenhum | Pronto |
|
|
332
|
+
| add-oauth | Done | 4/4 | 1 delta | auth (!) | Pronto*|
|
|
333
|
+
| add-verify-skill | 1 restante| 2/5 | Nenhum | Nenhum | Aviso |
|
|
334
|
+
\`\`\`
|
|
335
|
+
|
|
336
|
+
Para conflitos, mostre a resolução:
|
|
337
|
+
\`\`\`
|
|
338
|
+
* Resolução de conflito:
|
|
339
|
+
- auth spec: Aplicará add-oauth depois add-jwt (ambas implementadas, ordem cronológica)
|
|
340
|
+
\`\`\`
|
|
341
|
+
|
|
342
|
+
Para changes incompletas, mostre avisos:
|
|
343
|
+
\`\`\`
|
|
344
|
+
Avisos:
|
|
345
|
+
- add-verify-skill: 1 artifact incompleto, 3 tarefas incompletas
|
|
346
|
+
\`\`\`
|
|
347
|
+
|
|
348
|
+
7. **Confirme a operação em lote**
|
|
349
|
+
|
|
350
|
+
Use a ferramenta **AskUserQuestion** com uma única confirmação:
|
|
351
|
+
|
|
352
|
+
- "Arquivar N changes?" com opções baseadas no status
|
|
353
|
+
- As opções podem incluir:
|
|
354
|
+
- "Arquivar todas as N changes"
|
|
355
|
+
- "Arquivar apenas as N changes prontas (ignorar incompletas)"
|
|
356
|
+
- "Cancelar"
|
|
357
|
+
|
|
358
|
+
Se houver changes incompletas, deixe claro que elas serão arquivadas com avisos.
|
|
359
|
+
|
|
360
|
+
8. **Execute o arquivamento para cada change confirmada**
|
|
361
|
+
|
|
362
|
+
Processe as changes na ordem determinada (respeitando a resolução de conflitos):
|
|
363
|
+
|
|
364
|
+
a. **Sincronize specs** se delta specs existirem:
|
|
365
|
+
- Use a abordagem openspec-sync-specs (merge inteligente agent-driven)
|
|
366
|
+
- Para conflitos, aplique na ordem resolvida
|
|
367
|
+
- Rastreie se o sync foi feito
|
|
368
|
+
|
|
369
|
+
b. **Realize o arquivamento**:
|
|
370
|
+
\`\`\`bash
|
|
371
|
+
openspec archive <nome>
|
|
372
|
+
\`\`\`
|
|
373
|
+
|
|
374
|
+
Se precisar manipular programaticamente, construa os caminhos com \`path.join()\`
|
|
375
|
+
ou \`path.resolve()\` e use \`fs.rename()\` — evite comandos shell e separadores \`/\` hardcoded.
|
|
376
|
+
|
|
377
|
+
c. **Rastreie o resultado** para cada change:
|
|
378
|
+
- Sucesso: arquivado com sucesso
|
|
379
|
+
- Falha: erro durante o arquivamento (registre o erro)
|
|
380
|
+
- Ignorado: usuário escolheu não arquivar (se aplicável)
|
|
381
|
+
|
|
382
|
+
9. **Exiba o resumo**
|
|
383
|
+
|
|
384
|
+
Mostre os resultados finais:
|
|
385
|
+
|
|
386
|
+
\`\`\`
|
|
387
|
+
## Arquivamento em Lote Concluído
|
|
388
|
+
|
|
389
|
+
3 changes arquivadas:
|
|
390
|
+
- schema-management-cli -> archive/2026-01-19-schema-management-cli/
|
|
391
|
+
- project-config -> archive/2026-01-19-project-config/
|
|
392
|
+
- add-oauth -> archive/2026-01-19-add-oauth/
|
|
393
|
+
|
|
394
|
+
1 change ignorada:
|
|
395
|
+
- add-verify-skill (usuário escolheu não arquivar incompleta)
|
|
396
|
+
|
|
397
|
+
Resumo de sync de specs:
|
|
398
|
+
- 4 delta specs sincronizados com os specs principais
|
|
399
|
+
- 1 conflito resolvido (auth: aplicadas ambas em ordem cronológica)
|
|
400
|
+
\`\`\`
|
|
401
|
+
|
|
402
|
+
Se houver falhas:
|
|
403
|
+
\`\`\`
|
|
404
|
+
1 change falhou:
|
|
405
|
+
- some-change: O diretório de arquivo já existe
|
|
406
|
+
\`\`\`
|
|
407
|
+
|
|
408
|
+
**Exemplos de Resolução de Conflitos**
|
|
409
|
+
|
|
410
|
+
Exemplo 1: Apenas uma implementada
|
|
411
|
+
\`\`\`
|
|
412
|
+
Conflito: specs/auth/spec.md tocado por [add-oauth, add-jwt]
|
|
413
|
+
|
|
414
|
+
Verificando add-oauth:
|
|
415
|
+
- Delta adiciona requisito "OAuth Provider Integration"
|
|
416
|
+
- Pesquisando codebase... encontrado src/auth/oauth.ts implementando fluxo OAuth
|
|
417
|
+
|
|
418
|
+
Verificando add-jwt:
|
|
419
|
+
- Delta adiciona requisito "JWT Token Handling"
|
|
420
|
+
- Pesquisando codebase... nenhuma implementação JWT encontrada
|
|
421
|
+
|
|
422
|
+
Resolução: Apenas add-oauth está implementada. Sincronizará apenas os specs de add-oauth.
|
|
423
|
+
\`\`\`
|
|
424
|
+
|
|
425
|
+
Exemplo 2: Ambas implementadas
|
|
426
|
+
\`\`\`
|
|
427
|
+
Conflito: specs/api/spec.md tocado por [add-rest-api, add-graphql]
|
|
428
|
+
|
|
429
|
+
Verificando add-rest-api (criada 2026-01-10):
|
|
430
|
+
- Delta adiciona requisito "REST Endpoints"
|
|
431
|
+
- Pesquisando codebase... encontrado src/api/rest.ts
|
|
432
|
+
|
|
433
|
+
Verificando add-graphql (criada 2026-01-15):
|
|
434
|
+
- Delta adiciona requisito "GraphQL Schema"
|
|
435
|
+
- Pesquisando codebase... encontrado src/api/graphql.ts
|
|
436
|
+
|
|
437
|
+
Resolução: Ambas implementadas. Aplicará specs de add-rest-api primeiro,
|
|
438
|
+
depois specs de add-graphql (ordem cronológica, mais recente tem precedência).
|
|
439
|
+
\`\`\`
|
|
440
|
+
|
|
441
|
+
**Saída em Sucesso**
|
|
442
|
+
|
|
443
|
+
\`\`\`
|
|
444
|
+
## Arquivamento em Lote Concluído
|
|
445
|
+
|
|
446
|
+
N changes arquivadas:
|
|
447
|
+
- <change-1> -> archive/YYYY-MM-DD-<change-1>/
|
|
448
|
+
- <change-2> -> archive/YYYY-MM-DD-<change-2>/
|
|
449
|
+
|
|
450
|
+
Resumo de sync de specs:
|
|
451
|
+
- N delta specs sincronizados com os specs principais
|
|
452
|
+
- Nenhum conflito (ou: M conflitos resolvidos)
|
|
453
|
+
\`\`\`
|
|
454
|
+
|
|
455
|
+
**Saída em Sucesso Parcial**
|
|
456
|
+
|
|
457
|
+
\`\`\`
|
|
458
|
+
## Arquivamento em Lote Concluído (parcial)
|
|
459
|
+
|
|
460
|
+
N changes arquivadas:
|
|
461
|
+
- <change-1> -> archive/YYYY-MM-DD-<change-1>/
|
|
462
|
+
|
|
463
|
+
M changes ignoradas:
|
|
464
|
+
- <change-2> (usuário escolheu não arquivar incompleta)
|
|
465
|
+
|
|
466
|
+
K changes falharam:
|
|
467
|
+
- <change-3>: O diretório de arquivo já existe
|
|
468
|
+
\`\`\`
|
|
469
|
+
|
|
470
|
+
**Saída Quando Não Há Changes**
|
|
471
|
+
|
|
472
|
+
\`\`\`
|
|
473
|
+
## Nenhuma Change para Arquivar
|
|
474
|
+
|
|
475
|
+
Nenhuma change ativa encontrada. Crie uma nova change para começar.
|
|
476
|
+
\`\`\`
|
|
477
|
+
|
|
478
|
+
**Guardrails**
|
|
479
|
+
- Permita qualquer número de changes (1+ está ok, 2+ é o caso típico)
|
|
480
|
+
- Sempre solicite seleção, nunca selecione automaticamente
|
|
481
|
+
- Detecte conflitos de specs cedo e resolva verificando a codebase
|
|
482
|
+
- Quando ambas as changes estiverem implementadas, aplique specs em ordem cronológica
|
|
483
|
+
- Ignore o sync de specs apenas quando a implementação estiver ausente (avise o usuário)
|
|
484
|
+
- Mostre o status claro por change antes de confirmar
|
|
485
|
+
- Use uma única confirmação para todo o lote
|
|
486
|
+
- Rastreie e reporte todos os resultados (sucesso/ignorado/falha)
|
|
487
|
+
- Preservar .openspec.yaml ao mover para o arquivo
|
|
488
|
+
- O diretório de destino do arquivo usa a data atual: YYYY-MM-DD-<nome>
|
|
489
|
+
- Se o destino do arquivo existir, falhe aquela change mas continue com as outras`
|
|
490
|
+
};
|
|
491
|
+
}
|
|
492
|
+
//# sourceMappingURL=bulk-archive-change.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Template Workflow Modules
|
|
3
|
+
*
|
|
4
|
+
* This file is generated by splitting the legacy monolithic
|
|
5
|
+
* templates file into workflow-focused modules.
|
|
6
|
+
*/
|
|
7
|
+
import type { SkillTemplate, CommandTemplate } from '../types.js';
|
|
8
|
+
export declare function getContinueChangeSkillTemplate(): SkillTemplate;
|
|
9
|
+
export declare function getOpsxContinueCommandTemplate(): CommandTemplate;
|
|
10
|
+
//# sourceMappingURL=continue-change.d.ts.map
|