@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,272 @@
|
|
|
1
|
+
export function getSyncSpecsSkillTemplate() {
|
|
2
|
+
return {
|
|
3
|
+
name: 'openspec-sync-specs',
|
|
4
|
+
description: 'Sincroniza delta specs de uma change para os specs principais. Use quando o usuário quiser atualizar os specs principais com alterações de um delta spec, sem arquivar a change.',
|
|
5
|
+
instructions: `Sincroniza delta specs de uma change para os specs principais.
|
|
6
|
+
|
|
7
|
+
Esta é uma operação **dirigida por agente** — você lerá os delta specs e editará diretamente os specs principais para aplicar as alterações. Isso permite mesclagem inteligente (por exemplo, adicionar um cenário sem copiar o requisito inteiro).
|
|
8
|
+
|
|
9
|
+
**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.
|
|
10
|
+
|
|
11
|
+
**Passos**
|
|
12
|
+
|
|
13
|
+
1. **Se nenhum nome de change for fornecido, solicite a seleção**
|
|
14
|
+
|
|
15
|
+
Execute \`openspec list --json\` para obter as changes disponíveis. Use a ferramenta **AskUserQuestion** para permitir que o usuário selecione.
|
|
16
|
+
|
|
17
|
+
Mostre as changes que possuem delta specs (no diretório \`specs/\`).
|
|
18
|
+
|
|
19
|
+
**IMPORTANTE**: NÃO adivinhe ou selecione automaticamente uma change. Sempre deixe o usuário escolher.
|
|
20
|
+
|
|
21
|
+
2. **Encontre os delta specs**
|
|
22
|
+
|
|
23
|
+
Procure arquivos de delta spec em \`openspec/changes/<nome>/specs/*/spec.md\`.
|
|
24
|
+
|
|
25
|
+
Cada arquivo de delta spec contém seções como:
|
|
26
|
+
- \`## ADDED Requirements\` — Novos requisitos a adicionar
|
|
27
|
+
- \`## MODIFIED Requirements\` — Alterações em requisitos existentes
|
|
28
|
+
- \`## REMOVED Requirements\` — Requisitos a remover
|
|
29
|
+
- \`## RENAMED Requirements\` — Requisitos a renomear (formato FROM:/TO:)
|
|
30
|
+
|
|
31
|
+
Se nenhum delta spec for encontrado, informe o usuário e pare.
|
|
32
|
+
|
|
33
|
+
3. **Para cada delta spec, aplique as alterações nos specs principais**
|
|
34
|
+
|
|
35
|
+
Para cada capability com um delta spec em \`openspec/changes/<nome>/specs/<capability>/spec.md\`:
|
|
36
|
+
|
|
37
|
+
a. **Leia o delta spec** para entender as alterações pretendidas
|
|
38
|
+
|
|
39
|
+
b. **Leia o spec principal** em \`openspec/specs/<capability>/spec.md\` (pode ainda não existir)
|
|
40
|
+
|
|
41
|
+
c. **Aplique as alterações de forma inteligente**:
|
|
42
|
+
|
|
43
|
+
**ADDED Requirements:**
|
|
44
|
+
- Se o requisito não existir no spec principal → adicione-o
|
|
45
|
+
- Se o requisito já existir → atualize-o para corresponder (trate como MODIFIED implícito)
|
|
46
|
+
|
|
47
|
+
**MODIFIED Requirements:**
|
|
48
|
+
- Encontre o requisito no spec principal
|
|
49
|
+
- Aplique as alterações — isso pode ser:
|
|
50
|
+
- Adicionar novos cenários (não é necessário copiar os existentes)
|
|
51
|
+
- Modificar cenários existentes
|
|
52
|
+
- Alterar a descrição do requisito
|
|
53
|
+
- Preserve cenários/conteúdo não mencionados no delta
|
|
54
|
+
|
|
55
|
+
**REMOVED Requirements:**
|
|
56
|
+
- Remova o bloco inteiro do requisito do spec principal
|
|
57
|
+
|
|
58
|
+
**RENAMED Requirements:**
|
|
59
|
+
- Encontre o requisito FROM, renomeie para TO
|
|
60
|
+
|
|
61
|
+
d. **Crie um novo spec principal** se a capability ainda não existir:
|
|
62
|
+
- Crie \`openspec/specs/<capability>/spec.md\`
|
|
63
|
+
- Adicione a seção Purpose (pode ser breve, marque como TBD)
|
|
64
|
+
- Adicione a seção Requirements com os requisitos ADDED
|
|
65
|
+
|
|
66
|
+
4. **Exiba o resumo**
|
|
67
|
+
|
|
68
|
+
Após aplicar todas as alterações, resuma:
|
|
69
|
+
- Quais capabilities foram atualizadas
|
|
70
|
+
- Quais alterações foram feitas (requisitos adicionados/modificados/removidos/renomeados)
|
|
71
|
+
|
|
72
|
+
**Referência de Formato de Delta Spec**
|
|
73
|
+
|
|
74
|
+
\`\`\`markdown
|
|
75
|
+
## ADDED Requirements
|
|
76
|
+
|
|
77
|
+
### Requirement: New Feature
|
|
78
|
+
O sistema DEVERÁ fazer algo novo.
|
|
79
|
+
|
|
80
|
+
#### Scenario: Basic case
|
|
81
|
+
- **WHEN** user does X
|
|
82
|
+
- **THEN** system does Y
|
|
83
|
+
|
|
84
|
+
## MODIFIED Requirements
|
|
85
|
+
|
|
86
|
+
### Requirement: Existing Feature
|
|
87
|
+
#### Scenario: New scenario to add
|
|
88
|
+
- **WHEN** user does A
|
|
89
|
+
- **THEN** system does B
|
|
90
|
+
|
|
91
|
+
## REMOVED Requirements
|
|
92
|
+
|
|
93
|
+
### Requirement: Deprecated Feature
|
|
94
|
+
|
|
95
|
+
## RENAMED Requirements
|
|
96
|
+
|
|
97
|
+
- FROM: \`### Requirement: Old Name\`
|
|
98
|
+
- TO: \`### Requirement: New Name\`
|
|
99
|
+
\`\`\`
|
|
100
|
+
|
|
101
|
+
**Princípio-Chave: Mesclagem Inteligente**
|
|
102
|
+
|
|
103
|
+
Ao contrário da mesclagem programática, você pode aplicar **atualizações parciais**:
|
|
104
|
+
- Para adicionar um cenário, basta incluí-lo sob MODIFIED — não copie os cenários existentes
|
|
105
|
+
- O delta representa *intenção*, não uma substituição total
|
|
106
|
+
- Use seu julgamento para mesclar as alterações de forma sensata
|
|
107
|
+
|
|
108
|
+
**Saída em Sucesso**
|
|
109
|
+
|
|
110
|
+
\`\`\`
|
|
111
|
+
## Specs Sincronizados: <nome-change>
|
|
112
|
+
|
|
113
|
+
Specs principais atualizados:
|
|
114
|
+
|
|
115
|
+
**<capability-1>**:
|
|
116
|
+
- Added requirement: "New Feature"
|
|
117
|
+
- Modified requirement: "Existing Feature" (added 1 scenario)
|
|
118
|
+
|
|
119
|
+
**<capability-2>**:
|
|
120
|
+
- Created new spec file
|
|
121
|
+
- Added requirement: "Another Feature"
|
|
122
|
+
|
|
123
|
+
Os specs principais foram atualizados. A change permanece ativa — arquive quando a implementação estiver completa.
|
|
124
|
+
\`\`\`
|
|
125
|
+
|
|
126
|
+
**Guardrails**
|
|
127
|
+
- Leia tanto os delta specs quanto os specs principais antes de fazer alterações
|
|
128
|
+
- Preserve o conteúdo existente não mencionado no delta
|
|
129
|
+
- Se algo não estiver claro, peça esclarecimento
|
|
130
|
+
- Mostre o que está alterando à medida que avança
|
|
131
|
+
- A operação deve ser idempotente — executar duas vezes deve dar o mesmo resultado`,
|
|
132
|
+
license: 'MIT',
|
|
133
|
+
compatibility: 'Requer openspec CLI.',
|
|
134
|
+
metadata: { author: 'openspec', version: '1.0' },
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
export function getOpsxSyncCommandTemplate() {
|
|
138
|
+
return {
|
|
139
|
+
name: 'OPSX: Sync',
|
|
140
|
+
description: 'Sincroniza delta specs de uma change para os specs principais',
|
|
141
|
+
category: 'Workflow',
|
|
142
|
+
tags: ['workflow', 'specs', 'experimental'],
|
|
143
|
+
content: `Sincroniza delta specs de uma change para os specs principais.
|
|
144
|
+
|
|
145
|
+
Esta é uma operação **dirigida por agente** — você lerá os delta specs e editará diretamente os specs principais para aplicar as alterações. Isso permite mesclagem inteligente (por exemplo, adicionar um cenário sem copiar o requisito inteiro).
|
|
146
|
+
|
|
147
|
+
**Entrada**: Opcionalmente especifique um nome de change após \`/opsx:sync\` (por exemplo, \`/opsx:sync 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.
|
|
148
|
+
|
|
149
|
+
**Passos**
|
|
150
|
+
|
|
151
|
+
1. **Se nenhum nome de change for fornecido, solicite a seleção**
|
|
152
|
+
|
|
153
|
+
Execute \`openspec list --json\` para obter as changes disponíveis. Use a ferramenta **AskUserQuestion** para permitir que o usuário selecione.
|
|
154
|
+
|
|
155
|
+
Mostre as changes que possuem delta specs (no diretório \`specs/\`).
|
|
156
|
+
|
|
157
|
+
**IMPORTANTE**: NÃO adivinhe ou selecione automaticamente uma change. Sempre deixe o usuário escolher.
|
|
158
|
+
|
|
159
|
+
2. **Encontre os delta specs**
|
|
160
|
+
|
|
161
|
+
Procure arquivos de delta spec em \`openspec/changes/<nome>/specs/*/spec.md\`.
|
|
162
|
+
|
|
163
|
+
Cada arquivo de delta spec contém seções como:
|
|
164
|
+
- \`## ADDED Requirements\` — Novos requisitos a adicionar
|
|
165
|
+
- \`## MODIFIED Requirements\` — Alterações em requisitos existentes
|
|
166
|
+
- \`## REMOVED Requirements\` — Requisitos a remover
|
|
167
|
+
- \`## RENAMED Requirements\` — Requisitos a renomear (formato FROM:/TO:)
|
|
168
|
+
|
|
169
|
+
Se nenhum delta spec for encontrado, informe o usuário e pare.
|
|
170
|
+
|
|
171
|
+
3. **Para cada delta spec, aplique as alterações nos specs principais**
|
|
172
|
+
|
|
173
|
+
Para cada capability com um delta spec em \`openspec/changes/<nome>/specs/<capability>/spec.md\`:
|
|
174
|
+
|
|
175
|
+
a. **Leia o delta spec** para entender as alterações pretendidas
|
|
176
|
+
|
|
177
|
+
b. **Leia o spec principal** em \`openspec/specs/<capability>/spec.md\` (pode ainda não existir)
|
|
178
|
+
|
|
179
|
+
c. **Aplique as alterações de forma inteligente**:
|
|
180
|
+
|
|
181
|
+
**ADDED Requirements:**
|
|
182
|
+
- Se o requisito não existir no spec principal → adicione-o
|
|
183
|
+
- Se o requisito já existir → atualize-o para corresponder (trate como MODIFIED implícito)
|
|
184
|
+
|
|
185
|
+
**MODIFIED Requirements:**
|
|
186
|
+
- Encontre o requisito no spec principal
|
|
187
|
+
- Aplique as alterações — isso pode ser:
|
|
188
|
+
- Adicionar novos cenários (não é necessário copiar os existentes)
|
|
189
|
+
- Modificar cenários existentes
|
|
190
|
+
- Alterar a descrição do requisito
|
|
191
|
+
- Preserve cenários/conteúdo não mencionados no delta
|
|
192
|
+
|
|
193
|
+
**REMOVED Requirements:**
|
|
194
|
+
- Remova o bloco inteiro do requisito do spec principal
|
|
195
|
+
|
|
196
|
+
**RENAMED Requirements:**
|
|
197
|
+
- Encontre o requisito FROM, renomeie para TO
|
|
198
|
+
|
|
199
|
+
d. **Crie um novo spec principal** se a capability ainda não existir:
|
|
200
|
+
- Crie \`openspec/specs/<capability>/spec.md\`
|
|
201
|
+
- Adicione a seção Purpose (pode ser breve, marque como TBD)
|
|
202
|
+
- Adicione a seção Requirements com os requisitos ADDED
|
|
203
|
+
|
|
204
|
+
4. **Exiba o resumo**
|
|
205
|
+
|
|
206
|
+
Após aplicar todas as alterações, resuma:
|
|
207
|
+
- Quais capabilities foram atualizadas
|
|
208
|
+
- Quais alterações foram feitas (requisitos adicionados/modificados/removidos/renomeados)
|
|
209
|
+
|
|
210
|
+
**Referência de Formato de Delta Spec**
|
|
211
|
+
|
|
212
|
+
\`\`\`markdown
|
|
213
|
+
## ADDED Requirements
|
|
214
|
+
|
|
215
|
+
### Requirement: New Feature
|
|
216
|
+
O sistema DEVERÁ fazer algo novo.
|
|
217
|
+
|
|
218
|
+
#### Scenario: Basic case
|
|
219
|
+
- **WHEN** user does X
|
|
220
|
+
- **THEN** system does Y
|
|
221
|
+
|
|
222
|
+
## MODIFIED Requirements
|
|
223
|
+
|
|
224
|
+
### Requirement: Existing Feature
|
|
225
|
+
#### Scenario: New scenario to add
|
|
226
|
+
- **WHEN** user does A
|
|
227
|
+
- **THEN** system does B
|
|
228
|
+
|
|
229
|
+
## REMOVED Requirements
|
|
230
|
+
|
|
231
|
+
### Requirement: Deprecated Feature
|
|
232
|
+
|
|
233
|
+
## RENAMED Requirements
|
|
234
|
+
|
|
235
|
+
- FROM: \`### Requirement: Old Name\`
|
|
236
|
+
- TO: \`### Requirement: New Name\`
|
|
237
|
+
\`\`\`
|
|
238
|
+
|
|
239
|
+
**Princípio-Chave: Mesclagem Inteligente**
|
|
240
|
+
|
|
241
|
+
Ao contrário da mesclagem programática, você pode aplicar **atualizações parciais**:
|
|
242
|
+
- Para adicionar um cenário, basta incluí-lo sob MODIFIED — não copie os cenários existentes
|
|
243
|
+
- O delta representa *intenção*, não uma substituição total
|
|
244
|
+
- Use seu julgamento para mesclar as alterações de forma sensata
|
|
245
|
+
|
|
246
|
+
**Saída em Sucesso**
|
|
247
|
+
|
|
248
|
+
\`\`\`
|
|
249
|
+
## Specs Sincronizados: <nome-change>
|
|
250
|
+
|
|
251
|
+
Specs principais atualizados:
|
|
252
|
+
|
|
253
|
+
**<capability-1>**:
|
|
254
|
+
- Added requirement: "New Feature"
|
|
255
|
+
- Modified requirement: "Existing Feature" (added 1 scenario)
|
|
256
|
+
|
|
257
|
+
**<capability-2>**:
|
|
258
|
+
- Created new spec file
|
|
259
|
+
- Added requirement: "Another Feature"
|
|
260
|
+
|
|
261
|
+
Os specs principais foram atualizados. A change permanece ativa — arquive quando a implementação estiver completa.
|
|
262
|
+
\`\`\`
|
|
263
|
+
|
|
264
|
+
**Guardrails**
|
|
265
|
+
- Leia tanto os delta specs quanto os specs principais antes de fazer alterações
|
|
266
|
+
- Preserve o conteúdo existente não mencionado no delta
|
|
267
|
+
- Se algo não estiver claro, peça esclarecimento
|
|
268
|
+
- Mostre o que está alterando à medida que avança
|
|
269
|
+
- A operação deve ser idempotente — executar duas vezes deve dar o mesmo resultado`
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=sync-specs.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upstream Sync Workflow Template
|
|
3
|
+
*
|
|
4
|
+
* Guides the process of syncing the BR-OpenSpec fork with the upstream
|
|
5
|
+
* OpenSpec repository, translating new content to Brazilian Portuguese.
|
|
6
|
+
*/
|
|
7
|
+
import type { SkillTemplate, CommandTemplate } from '../types.js';
|
|
8
|
+
export declare function getUpstreamSyncSkillTemplate(): SkillTemplate;
|
|
9
|
+
export declare function getOpsxUpstreamSyncCommandTemplate(): CommandTemplate;
|
|
10
|
+
//# sourceMappingURL=upstream-sync.d.ts.map
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upstream Sync Workflow Template
|
|
3
|
+
*
|
|
4
|
+
* Guides the process of syncing the BR-OpenSpec fork with the upstream
|
|
5
|
+
* OpenSpec repository, translating new content to Brazilian Portuguese.
|
|
6
|
+
*/
|
|
7
|
+
export function getUpstreamSyncSkillTemplate() {
|
|
8
|
+
return {
|
|
9
|
+
name: 'openspec-upstream-sync',
|
|
10
|
+
description: 'Sincroniza o BR-OpenSpec com o upstream, traduz novas mensagens e atualiza a documentação em português brasileiro. Use quando houver atualizações no repositório original que precisem ser incorporadas ao fork.',
|
|
11
|
+
instructions: `Sincronize o BR-OpenSpec com o repositório upstream e traduza o conteúdo novo para português brasileiro.
|
|
12
|
+
|
|
13
|
+
**Entrada**: O usuário indica que há atualizações no upstream ou pede para sincronizar.
|
|
14
|
+
|
|
15
|
+
**Pré-requisitos**
|
|
16
|
+
- O remote upstream deve estar configurado:
|
|
17
|
+
\`git remote add upstream https://github.com/<upstream-owner>/<upstream-repo>.git\` (se ainda não estiver)
|
|
18
|
+
|
|
19
|
+
**Passos**
|
|
20
|
+
|
|
21
|
+
1. **Verifique o estado atual**
|
|
22
|
+
\`\`\`bash
|
|
23
|
+
git fetch upstream
|
|
24
|
+
git log --oneline HEAD..upstream/main --no-merges | head -20
|
|
25
|
+
\`\`\`
|
|
26
|
+
Isso mostra os commits que serão incorporados.
|
|
27
|
+
|
|
28
|
+
2. **Crie uma branch para o sync**
|
|
29
|
+
\`\`\`bash
|
|
30
|
+
git checkout -b sync/upstream-$(date +%Y%m%d)
|
|
31
|
+
\`\`\`
|
|
32
|
+
|
|
33
|
+
3. **Faça o merge do upstream**
|
|
34
|
+
\`\`\`bash
|
|
35
|
+
git merge upstream/main --no-edit
|
|
36
|
+
\`\`\`
|
|
37
|
+
- Se houver conflitos em \`src/messages/index.ts\`, resolva mantendo as mensagens em português brasileiro e incorporando as novas chaves em inglês.
|
|
38
|
+
- Para outros arquivos, resolva normalmente preservando as adaptações do BR-OpenSpec.
|
|
39
|
+
|
|
40
|
+
4. **Identifique novas strings de usuário**
|
|
41
|
+
Após o merge, encontre strings hardcoded em inglês que ainda não estão no catálogo:
|
|
42
|
+
\`\`\`bash
|
|
43
|
+
git diff upstream/main..HEAD --name-only | grep "^src/"
|
|
44
|
+
\`\`\`
|
|
45
|
+
Busque por novas ocorrências de \`console.log\`, \`console.error\`, \`console.warn\`, \`.description(\`, \`message:\` em arquivos modificados.
|
|
46
|
+
|
|
47
|
+
5. **Atualize o catálogo de mensagens**
|
|
48
|
+
- Adicione novas chaves em \`src/messages/index.ts\` na seção apropriada
|
|
49
|
+
- Traduza os valores para português brasileiro
|
|
50
|
+
- Mantenha a organização por domínio (CLI_DESCRIPTIONS, CLI_MESSAGES, CHANGE_MESSAGES, etc.)
|
|
51
|
+
- Se uma seção nova for necessária, crie-a com o padrão existente
|
|
52
|
+
|
|
53
|
+
6. **Substitua strings hardcoded nos arquivos fonte**
|
|
54
|
+
- Substitua cada string em inglês recém-adicionada pela referência ao catálogo
|
|
55
|
+
- Adicione o import necessário de \`../messages/index.js\` (ou caminho relativo apropriado)
|
|
56
|
+
- NÃO traduza: nomes de variáveis, comentários de código, identificadores técnicos, nomes de comandos CLI
|
|
57
|
+
|
|
58
|
+
7. **Atualize menções ao nome do projeto**
|
|
59
|
+
- Novos textos podem referenciar "OpenSpec" em vez de "BR-OpenSpec"
|
|
60
|
+
- Substitua referências ao nome do projeto em mensagens de usuário: \`s/\\bOpenSpec\\b/BR-OpenSpec/g\`
|
|
61
|
+
- NÃO altere: \`openspec\` (comando), \`openspec-\` (prefixos), \`OPENSPEC_\` (constantes), URLs
|
|
62
|
+
|
|
63
|
+
8. **Sincronize a documentação traduzida**
|
|
64
|
+
Compare os arquivos de documentação em inglês com seus correspondentes em pt-BR:
|
|
65
|
+
- \`README.md\` ↔ \`README.pt-BR.md\`
|
|
66
|
+
- \`docs/*.md\` ↔ \`docs/pt-BR/*.md\`
|
|
67
|
+
|
|
68
|
+
Para cada arquivo modificado pelo upstream:
|
|
69
|
+
- Aplique as mesmas mudanças estruturais nos correspondentes pt-BR
|
|
70
|
+
- Traduza novos trechos adicionados pelo upstream
|
|
71
|
+
- **PRESERVE adições pontuais do fork** (ex: justificativa da criação do fork, referências específicas ao BR-OpenSpec, links para recursos em pt-BR)
|
|
72
|
+
- Substitua "OpenSpec" por "BR-OpenSpec" quando o texto se referir ao projeto que o usuário está usando
|
|
73
|
+
- Mantenha nomes técnicos inalterados: \`openspec\`, \`.openspec.yaml\`, \`openspec/\`, skills \`openspec-*\`
|
|
74
|
+
|
|
75
|
+
9. **Atualize os testes**
|
|
76
|
+
- Rode \`pnpm test\` para identificar testes que quebraram devido às traduções
|
|
77
|
+
- Atualize as expectativas de strings de \`test/\` para refletir as mensagens em português
|
|
78
|
+
- NÃO altere a lógica dos testes — apenas as strings de comparação
|
|
79
|
+
|
|
80
|
+
10. **Valide o build**
|
|
81
|
+
\`\`\`bash
|
|
82
|
+
pnpm run build
|
|
83
|
+
pnpm exec tsc --noEmit
|
|
84
|
+
pnpm lint
|
|
85
|
+
\`\`\`
|
|
86
|
+
|
|
87
|
+
11. **Resumo do sync**
|
|
88
|
+
Informe ao usuário:
|
|
89
|
+
- Quais commits foram incorporados
|
|
90
|
+
- Quais arquivos foram modificados
|
|
91
|
+
- Quantas novas mensagens foram traduzidas
|
|
92
|
+
- Quais arquivos de documentação foram sincronizados
|
|
93
|
+
- Se há testes ainda falhando (e por quê)
|
|
94
|
+
|
|
95
|
+
**IMPORTANTE**: NUNCA traduza código técnico (nomes de variáveis, funções, constantes) ou comentários de documentação de API. Apenas mensagens exibidas ao usuário final.
|
|
96
|
+
`,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
export function getOpsxUpstreamSyncCommandTemplate() {
|
|
100
|
+
return {
|
|
101
|
+
name: 'upstream-sync',
|
|
102
|
+
description: 'Sincroniza com upstream e traduz novidades',
|
|
103
|
+
category: 'maintenance',
|
|
104
|
+
tags: ['sync', 'upstream', 'i18n'],
|
|
105
|
+
content: `Sincronize o BR-OpenSpec com o upstream.
|
|
106
|
+
|
|
107
|
+
1. Verifique atualizações: \`git fetch upstream && git log --oneline HEAD..upstream/main | head -10\`
|
|
108
|
+
2. Se houver commits, crie branch e faça merge
|
|
109
|
+
3. Identifique e traduza novas strings de usuário
|
|
110
|
+
4. Atualize o catálogo em \`src/messages/index.ts\`
|
|
111
|
+
5. Sincronize a documentação em pt-BR preservando adições do fork
|
|
112
|
+
6. Valide: \`pnpm run build && pnpm test\`
|
|
113
|
+
7. Resuma as mudanças para o usuário`,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=upstream-sync.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 getVerifyChangeSkillTemplate(): SkillTemplate;
|
|
9
|
+
export declare function getOpsxVerifyCommandTemplate(): CommandTemplate;
|
|
10
|
+
//# sourceMappingURL=verify-change.d.ts.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { VERIFY_CHANGE_TEMPLATE_MESSAGES } from '../../../messages/index.js';
|
|
2
|
+
export function getVerifyChangeSkillTemplate() {
|
|
3
|
+
return {
|
|
4
|
+
name: 'openspec-verify-change',
|
|
5
|
+
description: VERIFY_CHANGE_TEMPLATE_MESSAGES.skillDescription,
|
|
6
|
+
instructions: VERIFY_CHANGE_TEMPLATE_MESSAGES.skillInstructions,
|
|
7
|
+
license: 'MIT',
|
|
8
|
+
compatibility: VERIFY_CHANGE_TEMPLATE_MESSAGES.skillCompatibility,
|
|
9
|
+
metadata: { author: 'openspec', version: '1.0' },
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export function getOpsxVerifyCommandTemplate() {
|
|
13
|
+
return {
|
|
14
|
+
name: 'OPSX: Verify',
|
|
15
|
+
description: VERIFY_CHANGE_TEMPLATE_MESSAGES.opsxDescription,
|
|
16
|
+
category: 'Workflow',
|
|
17
|
+
tags: ['workflow', 'verify', 'experimental'],
|
|
18
|
+
content: VERIFY_CHANGE_TEMPLATE_MESSAGES.opsxContent,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=verify-change.js.map
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools Manager
|
|
3
|
+
*
|
|
4
|
+
* Encapsulates adding and removing IDE/Code Agent OpenSpec configuration files.
|
|
5
|
+
* Shared by `openspec init` (via InitCommand) and `openspec tools`.
|
|
6
|
+
*/
|
|
7
|
+
import { type AIToolOption } from './config.js';
|
|
8
|
+
/**
|
|
9
|
+
* Removes all OpenSpec-owned skill directories under the given `skillsDir`.
|
|
10
|
+
* Only directories whose names match known workflow skill dir names are removed.
|
|
11
|
+
* Other files and directories are left intact.
|
|
12
|
+
*
|
|
13
|
+
* @returns Number of directories removed
|
|
14
|
+
*/
|
|
15
|
+
export declare function removeOpenSpecSkillDirs(skillsDir: string): Promise<number>;
|
|
16
|
+
/**
|
|
17
|
+
* Removes all OpenSpec-owned command files for the given tool.
|
|
18
|
+
* Only files whose paths are produced by the tool's adapter `getFilePath()` are removed.
|
|
19
|
+
* The tool's configuration directory is left intact.
|
|
20
|
+
*
|
|
21
|
+
* @returns Number of files removed
|
|
22
|
+
*/
|
|
23
|
+
export declare function removeOpenSpecCommandFiles(projectPath: string, toolId: string): Promise<number>;
|
|
24
|
+
/**
|
|
25
|
+
* Adds OpenSpec skill and command files for the given tool.
|
|
26
|
+
* Creates the tool's configuration directory if it does not exist.
|
|
27
|
+
* Respects the active global config (profile and delivery settings).
|
|
28
|
+
*/
|
|
29
|
+
export declare function addTool(projectPath: string, tool: AIToolOption): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Removes OpenSpec-owned skill and command files for the given tool.
|
|
32
|
+
* The tool's configuration directory itself is left intact; only files and
|
|
33
|
+
* directories created by OpenSpec are removed.
|
|
34
|
+
*
|
|
35
|
+
* @returns Counts of removed skill dirs and command files
|
|
36
|
+
*/
|
|
37
|
+
export declare function removeTool(projectPath: string, tool: AIToolOption): Promise<{
|
|
38
|
+
removedSkillCount: number;
|
|
39
|
+
removedCommandCount: number;
|
|
40
|
+
}>;
|
|
41
|
+
/**
|
|
42
|
+
* Returns the IDs of all tools that are currently configured in the project.
|
|
43
|
+
*/
|
|
44
|
+
export declare function getCurrentToolIds(projectPath: string): Set<string>;
|
|
45
|
+
/**
|
|
46
|
+
* Returns all tools eligible for skill generation (those with a skillsDir).
|
|
47
|
+
*/
|
|
48
|
+
export declare function getEligibleTools(): AIToolOption[];
|
|
49
|
+
/**
|
|
50
|
+
* Resolves a comma-separated tool list string to an array of valid tool IDs.
|
|
51
|
+
*
|
|
52
|
+
* Accepts the special values "all" and "none".
|
|
53
|
+
* Throws a descriptive error for invalid or ambiguous inputs.
|
|
54
|
+
*/
|
|
55
|
+
export declare function resolveToolsArg(raw: string): string[];
|
|
56
|
+
//# sourceMappingURL=tools-manager.d.ts.map
|