@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.
Files changed (291) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +210 -0
  3. package/README.pt-BR.md +212 -0
  4. package/bin/openspec.js +3 -0
  5. package/dist/cli/index.d.ts +2 -0
  6. package/dist/cli/index.js +484 -0
  7. package/dist/commands/change.d.ts +35 -0
  8. package/dist/commands/change.js +278 -0
  9. package/dist/commands/completion.d.ts +72 -0
  10. package/dist/commands/completion.js +258 -0
  11. package/dist/commands/config.d.ts +36 -0
  12. package/dist/commands/config.js +553 -0
  13. package/dist/commands/feedback.d.ts +9 -0
  14. package/dist/commands/feedback.js +184 -0
  15. package/dist/commands/schema.d.ts +6 -0
  16. package/dist/commands/schema.js +869 -0
  17. package/dist/commands/show.d.ts +14 -0
  18. package/dist/commands/show.js +133 -0
  19. package/dist/commands/spec.d.ts +15 -0
  20. package/dist/commands/spec.js +226 -0
  21. package/dist/commands/tools.d.ts +11 -0
  22. package/dist/commands/tools.js +252 -0
  23. package/dist/commands/validate.d.ts +24 -0
  24. package/dist/commands/validate.js +295 -0
  25. package/dist/commands/workflow/index.d.ts +17 -0
  26. package/dist/commands/workflow/index.js +12 -0
  27. package/dist/commands/workflow/instructions.d.ts +29 -0
  28. package/dist/commands/workflow/instructions.js +328 -0
  29. package/dist/commands/workflow/new-change.d.ts +11 -0
  30. package/dist/commands/workflow/new-change.js +44 -0
  31. package/dist/commands/workflow/schemas.d.ts +10 -0
  32. package/dist/commands/workflow/schemas.js +35 -0
  33. package/dist/commands/workflow/shared.d.ts +57 -0
  34. package/dist/commands/workflow/shared.js +117 -0
  35. package/dist/commands/workflow/status.d.ts +14 -0
  36. package/dist/commands/workflow/status.js +76 -0
  37. package/dist/commands/workflow/templates.d.ts +16 -0
  38. package/dist/commands/workflow/templates.js +70 -0
  39. package/dist/core/archive.d.ts +11 -0
  40. package/dist/core/archive.js +322 -0
  41. package/dist/core/artifact-graph/graph.d.ts +56 -0
  42. package/dist/core/artifact-graph/graph.js +141 -0
  43. package/dist/core/artifact-graph/index.d.ts +8 -0
  44. package/dist/core/artifact-graph/index.js +14 -0
  45. package/dist/core/artifact-graph/instruction-loader.d.ts +143 -0
  46. package/dist/core/artifact-graph/instruction-loader.js +217 -0
  47. package/dist/core/artifact-graph/outputs.d.ts +14 -0
  48. package/dist/core/artifact-graph/outputs.js +39 -0
  49. package/dist/core/artifact-graph/resolver.d.ts +81 -0
  50. package/dist/core/artifact-graph/resolver.js +258 -0
  51. package/dist/core/artifact-graph/schema.d.ts +13 -0
  52. package/dist/core/artifact-graph/schema.js +108 -0
  53. package/dist/core/artifact-graph/state.d.ts +12 -0
  54. package/dist/core/artifact-graph/state.js +31 -0
  55. package/dist/core/artifact-graph/types.d.ts +45 -0
  56. package/dist/core/artifact-graph/types.js +43 -0
  57. package/dist/core/available-tools.d.ts +17 -0
  58. package/dist/core/available-tools.js +43 -0
  59. package/dist/core/command-generation/adapters/amazon-q.d.ts +13 -0
  60. package/dist/core/command-generation/adapters/amazon-q.js +26 -0
  61. package/dist/core/command-generation/adapters/antigravity.d.ts +13 -0
  62. package/dist/core/command-generation/adapters/antigravity.js +26 -0
  63. package/dist/core/command-generation/adapters/auggie.d.ts +13 -0
  64. package/dist/core/command-generation/adapters/auggie.js +27 -0
  65. package/dist/core/command-generation/adapters/bob.d.ts +14 -0
  66. package/dist/core/command-generation/adapters/bob.js +45 -0
  67. package/dist/core/command-generation/adapters/claude.d.ts +13 -0
  68. package/dist/core/command-generation/adapters/claude.js +50 -0
  69. package/dist/core/command-generation/adapters/cline.d.ts +14 -0
  70. package/dist/core/command-generation/adapters/cline.js +27 -0
  71. package/dist/core/command-generation/adapters/codebuddy.d.ts +13 -0
  72. package/dist/core/command-generation/adapters/codebuddy.js +28 -0
  73. package/dist/core/command-generation/adapters/codex.d.ts +16 -0
  74. package/dist/core/command-generation/adapters/codex.js +39 -0
  75. package/dist/core/command-generation/adapters/continue.d.ts +13 -0
  76. package/dist/core/command-generation/adapters/continue.js +28 -0
  77. package/dist/core/command-generation/adapters/costrict.d.ts +13 -0
  78. package/dist/core/command-generation/adapters/costrict.js +27 -0
  79. package/dist/core/command-generation/adapters/crush.d.ts +13 -0
  80. package/dist/core/command-generation/adapters/crush.js +30 -0
  81. package/dist/core/command-generation/adapters/cursor.d.ts +14 -0
  82. package/dist/core/command-generation/adapters/cursor.js +44 -0
  83. package/dist/core/command-generation/adapters/factory.d.ts +13 -0
  84. package/dist/core/command-generation/adapters/factory.js +27 -0
  85. package/dist/core/command-generation/adapters/gemini.d.ts +13 -0
  86. package/dist/core/command-generation/adapters/gemini.js +26 -0
  87. package/dist/core/command-generation/adapters/github-copilot.d.ts +13 -0
  88. package/dist/core/command-generation/adapters/github-copilot.js +26 -0
  89. package/dist/core/command-generation/adapters/iflow.d.ts +13 -0
  90. package/dist/core/command-generation/adapters/iflow.js +29 -0
  91. package/dist/core/command-generation/adapters/index.d.ts +32 -0
  92. package/dist/core/command-generation/adapters/index.js +32 -0
  93. package/dist/core/command-generation/adapters/junie.d.ts +13 -0
  94. package/dist/core/command-generation/adapters/junie.js +26 -0
  95. package/dist/core/command-generation/adapters/kilocode.d.ts +14 -0
  96. package/dist/core/command-generation/adapters/kilocode.js +23 -0
  97. package/dist/core/command-generation/adapters/kiro.d.ts +13 -0
  98. package/dist/core/command-generation/adapters/kiro.js +26 -0
  99. package/dist/core/command-generation/adapters/lingma.d.ts +13 -0
  100. package/dist/core/command-generation/adapters/lingma.js +30 -0
  101. package/dist/core/command-generation/adapters/opencode.d.ts +13 -0
  102. package/dist/core/command-generation/adapters/opencode.js +29 -0
  103. package/dist/core/command-generation/adapters/pi.d.ts +18 -0
  104. package/dist/core/command-generation/adapters/pi.js +55 -0
  105. package/dist/core/command-generation/adapters/qoder.d.ts +13 -0
  106. package/dist/core/command-generation/adapters/qoder.js +30 -0
  107. package/dist/core/command-generation/adapters/qwen.d.ts +13 -0
  108. package/dist/core/command-generation/adapters/qwen.js +26 -0
  109. package/dist/core/command-generation/adapters/roocode.d.ts +14 -0
  110. package/dist/core/command-generation/adapters/roocode.js +27 -0
  111. package/dist/core/command-generation/adapters/windsurf.d.ts +14 -0
  112. package/dist/core/command-generation/adapters/windsurf.js +51 -0
  113. package/dist/core/command-generation/generator.d.ts +21 -0
  114. package/dist/core/command-generation/generator.js +27 -0
  115. package/dist/core/command-generation/index.d.ts +22 -0
  116. package/dist/core/command-generation/index.js +24 -0
  117. package/dist/core/command-generation/registry.d.ts +36 -0
  118. package/dist/core/command-generation/registry.js +98 -0
  119. package/dist/core/command-generation/types.d.ts +56 -0
  120. package/dist/core/command-generation/types.js +8 -0
  121. package/dist/core/completions/command-registry.d.ts +7 -0
  122. package/dist/core/completions/command-registry.js +462 -0
  123. package/dist/core/completions/completion-provider.d.ts +60 -0
  124. package/dist/core/completions/completion-provider.js +102 -0
  125. package/dist/core/completions/factory.d.ts +64 -0
  126. package/dist/core/completions/factory.js +75 -0
  127. package/dist/core/completions/generators/bash-generator.d.ts +32 -0
  128. package/dist/core/completions/generators/bash-generator.js +174 -0
  129. package/dist/core/completions/generators/fish-generator.d.ts +32 -0
  130. package/dist/core/completions/generators/fish-generator.js +157 -0
  131. package/dist/core/completions/generators/powershell-generator.d.ts +33 -0
  132. package/dist/core/completions/generators/powershell-generator.js +208 -0
  133. package/dist/core/completions/generators/zsh-generator.d.ts +44 -0
  134. package/dist/core/completions/generators/zsh-generator.js +250 -0
  135. package/dist/core/completions/installers/bash-installer.d.ts +87 -0
  136. package/dist/core/completions/installers/bash-installer.js +319 -0
  137. package/dist/core/completions/installers/fish-installer.d.ts +43 -0
  138. package/dist/core/completions/installers/fish-installer.js +143 -0
  139. package/dist/core/completions/installers/powershell-installer.d.ts +102 -0
  140. package/dist/core/completions/installers/powershell-installer.js +400 -0
  141. package/dist/core/completions/installers/zsh-installer.d.ts +125 -0
  142. package/dist/core/completions/installers/zsh-installer.js +450 -0
  143. package/dist/core/completions/templates/bash-templates.d.ts +6 -0
  144. package/dist/core/completions/templates/bash-templates.js +24 -0
  145. package/dist/core/completions/templates/fish-templates.d.ts +7 -0
  146. package/dist/core/completions/templates/fish-templates.js +39 -0
  147. package/dist/core/completions/templates/powershell-templates.d.ts +6 -0
  148. package/dist/core/completions/templates/powershell-templates.js +25 -0
  149. package/dist/core/completions/templates/zsh-templates.d.ts +6 -0
  150. package/dist/core/completions/templates/zsh-templates.js +36 -0
  151. package/dist/core/completions/types.d.ts +79 -0
  152. package/dist/core/completions/types.js +2 -0
  153. package/dist/core/config-prompts.d.ts +9 -0
  154. package/dist/core/config-prompts.js +34 -0
  155. package/dist/core/config-schema.d.ts +86 -0
  156. package/dist/core/config-schema.js +213 -0
  157. package/dist/core/config.d.ts +18 -0
  158. package/dist/core/config.js +38 -0
  159. package/dist/core/converters/json-converter.d.ts +6 -0
  160. package/dist/core/converters/json-converter.js +51 -0
  161. package/dist/core/global-config.d.ts +44 -0
  162. package/dist/core/global-config.js +125 -0
  163. package/dist/core/index.d.ts +2 -0
  164. package/dist/core/index.js +3 -0
  165. package/dist/core/init.d.ts +37 -0
  166. package/dist/core/init.js +549 -0
  167. package/dist/core/is-project-initialized.d.ts +12 -0
  168. package/dist/core/is-project-initialized.js +18 -0
  169. package/dist/core/legacy-cleanup.d.ts +162 -0
  170. package/dist/core/legacy-cleanup.js +515 -0
  171. package/dist/core/list.d.ts +9 -0
  172. package/dist/core/list.js +172 -0
  173. package/dist/core/migration.d.ts +23 -0
  174. package/dist/core/migration.js +109 -0
  175. package/dist/core/parsers/change-parser.d.ts +13 -0
  176. package/dist/core/parsers/change-parser.js +197 -0
  177. package/dist/core/parsers/markdown-parser.d.ts +26 -0
  178. package/dist/core/parsers/markdown-parser.js +228 -0
  179. package/dist/core/parsers/requirement-blocks.d.ts +37 -0
  180. package/dist/core/parsers/requirement-blocks.js +201 -0
  181. package/dist/core/parsers/spec-structure.d.ts +9 -0
  182. package/dist/core/parsers/spec-structure.js +88 -0
  183. package/dist/core/profile-sync-drift.d.ts +38 -0
  184. package/dist/core/profile-sync-drift.js +200 -0
  185. package/dist/core/profiles.d.ts +26 -0
  186. package/dist/core/profiles.js +40 -0
  187. package/dist/core/project-config.d.ts +64 -0
  188. package/dist/core/project-config.js +224 -0
  189. package/dist/core/schemas/base.schema.d.ts +13 -0
  190. package/dist/core/schemas/base.schema.js +13 -0
  191. package/dist/core/schemas/change.schema.d.ts +73 -0
  192. package/dist/core/schemas/change.schema.js +31 -0
  193. package/dist/core/schemas/index.d.ts +4 -0
  194. package/dist/core/schemas/index.js +4 -0
  195. package/dist/core/schemas/spec.schema.d.ts +18 -0
  196. package/dist/core/schemas/spec.schema.js +15 -0
  197. package/dist/core/shared/index.d.ts +8 -0
  198. package/dist/core/shared/index.js +8 -0
  199. package/dist/core/shared/skill-generation.d.ts +49 -0
  200. package/dist/core/shared/skill-generation.js +96 -0
  201. package/dist/core/shared/tool-detection.d.ts +71 -0
  202. package/dist/core/shared/tool-detection.js +158 -0
  203. package/dist/core/specs-apply.d.ts +73 -0
  204. package/dist/core/specs-apply.js +393 -0
  205. package/dist/core/styles/palette.d.ts +7 -0
  206. package/dist/core/styles/palette.js +8 -0
  207. package/dist/core/templates/index.d.ts +8 -0
  208. package/dist/core/templates/index.js +9 -0
  209. package/dist/core/templates/skill-templates.d.ts +20 -0
  210. package/dist/core/templates/skill-templates.js +19 -0
  211. package/dist/core/templates/types.d.ts +19 -0
  212. package/dist/core/templates/types.js +5 -0
  213. package/dist/core/templates/workflows/apply-change.d.ts +10 -0
  214. package/dist/core/templates/workflows/apply-change.js +308 -0
  215. package/dist/core/templates/workflows/archive-change.d.ts +10 -0
  216. package/dist/core/templates/workflows/archive-change.js +271 -0
  217. package/dist/core/templates/workflows/bulk-archive-change.d.ts +10 -0
  218. package/dist/core/templates/workflows/bulk-archive-change.js +492 -0
  219. package/dist/core/templates/workflows/continue-change.d.ts +10 -0
  220. package/dist/core/templates/workflows/continue-change.js +232 -0
  221. package/dist/core/templates/workflows/explore.d.ts +10 -0
  222. package/dist/core/templates/workflows/explore.js +463 -0
  223. package/dist/core/templates/workflows/feedback.d.ts +9 -0
  224. package/dist/core/templates/workflows/feedback.js +108 -0
  225. package/dist/core/templates/workflows/ff-change.d.ts +10 -0
  226. package/dist/core/templates/workflows/ff-change.js +198 -0
  227. package/dist/core/templates/workflows/new-change.d.ts +10 -0
  228. package/dist/core/templates/workflows/new-change.js +21 -0
  229. package/dist/core/templates/workflows/onboard.d.ts +10 -0
  230. package/dist/core/templates/workflows/onboard.js +21 -0
  231. package/dist/core/templates/workflows/propose.d.ts +10 -0
  232. package/dist/core/templates/workflows/propose.js +216 -0
  233. package/dist/core/templates/workflows/sync-specs.d.ts +10 -0
  234. package/dist/core/templates/workflows/sync-specs.js +272 -0
  235. package/dist/core/templates/workflows/upstream-sync.d.ts +10 -0
  236. package/dist/core/templates/workflows/upstream-sync.js +116 -0
  237. package/dist/core/templates/workflows/verify-change.d.ts +10 -0
  238. package/dist/core/templates/workflows/verify-change.js +21 -0
  239. package/dist/core/tools-manager.d.ts +56 -0
  240. package/dist/core/tools-manager.js +215 -0
  241. package/dist/core/update.d.ts +77 -0
  242. package/dist/core/update.js +538 -0
  243. package/dist/core/validation/constants.d.ts +34 -0
  244. package/dist/core/validation/constants.js +40 -0
  245. package/dist/core/validation/types.d.ts +18 -0
  246. package/dist/core/validation/types.js +2 -0
  247. package/dist/core/validation/validator.d.ts +33 -0
  248. package/dist/core/validation/validator.js +419 -0
  249. package/dist/core/view.d.ts +8 -0
  250. package/dist/core/view.js +169 -0
  251. package/dist/index.d.ts +3 -0
  252. package/dist/index.js +3 -0
  253. package/dist/messages/index.d.ts +867 -0
  254. package/dist/messages/index.js +1960 -0
  255. package/dist/prompts/searchable-multi-select.d.ts +28 -0
  256. package/dist/prompts/searchable-multi-select.js +160 -0
  257. package/dist/telemetry/config.d.ts +38 -0
  258. package/dist/telemetry/config.js +136 -0
  259. package/dist/telemetry/index.d.ts +31 -0
  260. package/dist/telemetry/index.js +165 -0
  261. package/dist/ui/ascii-patterns.d.ts +16 -0
  262. package/dist/ui/ascii-patterns.js +133 -0
  263. package/dist/ui/welcome-screen.d.ts +10 -0
  264. package/dist/ui/welcome-screen.js +147 -0
  265. package/dist/utils/change-metadata.d.ts +51 -0
  266. package/dist/utils/change-metadata.js +147 -0
  267. package/dist/utils/change-utils.d.ts +62 -0
  268. package/dist/utils/change-utils.js +121 -0
  269. package/dist/utils/command-references.d.ts +18 -0
  270. package/dist/utils/command-references.js +20 -0
  271. package/dist/utils/file-system.d.ts +41 -0
  272. package/dist/utils/file-system.js +302 -0
  273. package/dist/utils/index.d.ts +6 -0
  274. package/dist/utils/index.js +9 -0
  275. package/dist/utils/interactive.d.ts +18 -0
  276. package/dist/utils/interactive.js +21 -0
  277. package/dist/utils/item-discovery.d.ts +4 -0
  278. package/dist/utils/item-discovery.js +72 -0
  279. package/dist/utils/match.d.ts +3 -0
  280. package/dist/utils/match.js +22 -0
  281. package/dist/utils/shell-detection.d.ts +20 -0
  282. package/dist/utils/shell-detection.js +41 -0
  283. package/dist/utils/task-progress.d.ts +8 -0
  284. package/dist/utils/task-progress.js +37 -0
  285. package/package.json +84 -0
  286. package/schemas/spec-driven/schema.yaml +153 -0
  287. package/schemas/spec-driven/templates/design.md +19 -0
  288. package/schemas/spec-driven/templates/proposal.md +23 -0
  289. package/schemas/spec-driven/templates/spec.md +8 -0
  290. package/schemas/spec-driven/templates/tasks.md +9 -0
  291. 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