@aksp/opencrew 1.9.0 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +112 -0
- package/README.md +98 -6
- package/package.json +1 -1
- package/src/commands/init.js +4 -5
- package/src/commands/update.js +8 -0
- package/src/lib/resumo.js +5 -1
- package/templates/AGENTS.md +17 -7
- package/templates/_opencrew/.opencrew-version +1 -1
- package/templates/_opencrew/core/architect.agent.yaml +25 -16
- package/templates/_opencrew/core/best-practices/_catalog.yaml +5 -0
- package/templates/_opencrew/core/best-practices/documento-oficial.md +144 -0
- package/templates/_opencrew/core/formato-da-crew.md +162 -0
- package/templates/_opencrew/core/modelos/documento-oficial.md +42 -0
- package/templates/_opencrew/core/prompts/build.prompt.md +33 -57
- package/templates/_opencrew/core/prompts/design.prompt.md +12 -11
- package/templates/_opencrew/core/prompts/discovery.prompt.md +23 -5
- package/templates/_opencrew/core/prompts/documento.prompt.md +134 -0
- package/templates/_opencrew/core/prompts/entrega.prompt.md +5 -4
- package/templates/_opencrew/core/prompts/repair.prompt.md +75 -84
- package/templates/_opencrew/core/runner.pipeline.md +9 -12
- package/templates/_opencrew/core/scripts/conserto/achados.mjs +158 -0
- package/templates/_opencrew/core/scripts/conserto/aplicar.mjs +156 -0
- package/templates/_opencrew/core/scripts/conserto/argumentos.mjs +51 -0
- package/templates/_opencrew/core/scripts/conserto/crew.mjs +126 -0
- package/templates/_opencrew/core/scripts/conserto/edicoes.mjs +133 -0
- package/templates/_opencrew/core/scripts/conserto/gravar.mjs +55 -0
- package/templates/_opencrew/core/scripts/conserto.mjs +82 -0
- package/templates/_opencrew/core/scripts/documento/argumentos.mjs +50 -0
- package/templates/_opencrew/core/scripts/documento/corpo.mjs +51 -0
- package/templates/_opencrew/core/scripts/documento/estilos.mjs +42 -0
- package/templates/_opencrew/core/scripts/documento/gravar.mjs +44 -0
- package/templates/_opencrew/core/scripts/documento/linha.mjs +58 -0
- package/templates/_opencrew/core/scripts/documento/marcacoes.mjs +55 -0
- package/templates/_opencrew/core/scripts/documento/markdown.mjs +92 -0
- package/templates/_opencrew/core/scripts/documento/pacote.mjs +82 -0
- package/templates/_opencrew/core/scripts/documento/perfil.mjs +70 -0
- package/templates/_opencrew/core/scripts/documento/png.mjs +20 -0
- package/templates/_opencrew/core/scripts/documento/projeto.mjs +60 -0
- package/templates/_opencrew/core/scripts/documento/tabelas.mjs +57 -0
- package/templates/_opencrew/core/scripts/documento/timbre.mjs +64 -0
- package/templates/_opencrew/core/scripts/documento/xml.mjs +95 -0
- package/templates/_opencrew/core/scripts/documento/zip.mjs +86 -0
- package/templates/_opencrew/core/scripts/documento.mjs +150 -0
- package/templates/_opencrew/core/scripts/entrega/canais.mjs +7 -3
- package/templates/_opencrew/core/scripts/entrega/comparar.mjs +2 -2
- package/templates/_opencrew/core/scripts/entrega/copia.mjs +1 -1
- package/templates/_opencrew/core/scripts/entrega/documentos.mjs +104 -0
- package/templates/_opencrew/core/scripts/entrega/gravar.mjs +3 -3
- package/templates/_opencrew/core/scripts/entrega/leiame.mjs +3 -2
- package/templates/_opencrew/core/scripts/entrega/passos.mjs +12 -2
- package/templates/_opencrew/core/scripts/entrega/separar.mjs +3 -0
- package/templates/_opencrew/core/scripts/entregar.mjs +12 -5
- package/templates/_opencrew/core/scripts/verificar/proibicoes.mjs +30 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,118 @@
|
|
|
3
3
|
All notable changes to opencrew are documented here.
|
|
4
4
|
The format is based on [Keep a Changelog](https://keepachangelog.com/).
|
|
5
5
|
|
|
6
|
+
## [1.11.0] — 2026-10-07
|
|
7
|
+
|
|
8
|
+
Fase U4, fatia 1: "Conserto de crews e caminho de criação" (`specs/fase-u4a-conserto-de-crews.md`).
|
|
9
|
+
Chega a quem já usa com um `npx @aksp/opencrew@latest update`; as suas crews só mudam quando você
|
|
10
|
+
pede o conserto e diz sim a cada ponto.
|
|
11
|
+
|
|
12
|
+
Ainda não nesta versão: histórico confiável e pedido avulso à crew (`/opencrew pedir`), que vêm
|
|
13
|
+
na 1.12.0; retomar uma execução interrompida, na 1.13.0. O conserto não reordena passos: crew
|
|
14
|
+
sem revisão, sem aprovação final ou que publica antes da revisão é apontada e resolvida com
|
|
15
|
+
`/opencrew edit`.
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- **`/opencrew repair <crew>` conserta crews antigas.** Ele lê a crew e mostra, em português, o
|
|
19
|
+
que falta para as melhorias das versões seguintes valerem nela: passo sem o formato do texto
|
|
20
|
+
(o verificador media como post de blog), crew sem os arquivos do projeto que deve ler,
|
|
21
|
+
proibição sem trecho entre aspas (que o verificador não consegue barrar), nomes dos agentes,
|
|
22
|
+
passo que publica sem a marca. Conserta um ponto por vez, com o seu sim; cada arquivo alterado
|
|
23
|
+
ganha uma cópia `.bak`. Quem grava é um script (`_opencrew/core/scripts/conserto.mjs`), não a
|
|
24
|
+
IA; sem `--aplicar` ele só lê.
|
|
25
|
+
- **Proibição que é regra de conteúdo** ("nunca prever votação por aclamação") pode ser marcada
|
|
26
|
+
como `(revisão humana)`: fica para o revisor e deixa de aparecer como pendência do verificador.
|
|
27
|
+
- **Crew de documento na criação.** Pedir uma crew de ata, ofício, contrato ou proposta leva a
|
|
28
|
+
perguntas próprias (quais documentos, quem assina e quem recebe, papel timbrado, quais arquivos
|
|
29
|
+
mandam no texto), sem a oferta de investigar perfis de referência, e os passos já saem com o
|
|
30
|
+
formato `documento-oficial`.
|
|
31
|
+
- **Formato da crew escrito num lugar só** (`_opencrew/core/formato-da-crew.md`): `crew.yaml`,
|
|
32
|
+
`pipeline.yaml`, os campos de cada passo e o `id` do agente, com um exemplo completo. A criação,
|
|
33
|
+
o runner e o conserto seguem esse arquivo; as formas que versões antigas gravaram continuam
|
|
34
|
+
sendo lidas.
|
|
35
|
+
- Depois do `update`, quando o projeto tem ao menos uma crew, o resumo lembra do
|
|
36
|
+
`/opencrew repair`.
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
- **`max_review_cycles` no `crew.yaml` passa a valer.** O runner só lia o limite de ciclos de
|
|
40
|
+
revisão no passo de revisão; crews que o declaravam no `crew.yaml` recebiam sempre 3.
|
|
41
|
+
- **Tier Express tem passo de revisão**, feito pelo próprio redator: o verificador automático roda
|
|
42
|
+
também nele. Antes o texto dizia "o redator se revisa" e, em outro ponto, "toda crew precisa de
|
|
43
|
+
revisor".
|
|
44
|
+
- **Checkpoint que guarda a resposta em arquivo** deixa de usar sempre o formato de "foco de
|
|
45
|
+
pesquisa": fora do checkpoint do pesquisador, grava o título, a sua resposta e a data.
|
|
46
|
+
- O Architect lista os prompts de cada fase da criação, e o ponto de entrada diz onde ele está;
|
|
47
|
+
antes um apontava para o outro.
|
|
48
|
+
- Pasta de `crews/` sem `crew.yaml` (os modelos instalados) não aparece mais como crew nas
|
|
49
|
+
listas.
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
- `init --ide=<lista> --yes` (e `--all`) instalava as pontes das 9 IDEs; agora a lista vence.
|
|
53
|
+
`--yes` sem `--ide` continua instalando todas.
|
|
54
|
+
- Uma frase cortada no meio nas instruções instaladas (`_opencrew/core/system.md`, desde a
|
|
55
|
+
1.10.0): a rota do documento Word e o pedido de entrega de uma execução encerrada não exigem o
|
|
56
|
+
onboarding.
|
|
57
|
+
- O Build exigia um checkpoint imediatamente antes de cada passo que publica, o que era
|
|
58
|
+
impossível com dois passos de publicação seguidos.
|
|
59
|
+
|
|
60
|
+
## [1.10.0] — 2026-10-07
|
|
61
|
+
|
|
62
|
+
Fase U3b "Documento Word, com perfil de documento oficial" (`specs/fase-u3b-documento-word.md`).
|
|
63
|
+
Chega a quem já usa com um `npx @aksp/opencrew@latest update`; o papel timbrado é criado só quando
|
|
64
|
+
você pede.
|
|
65
|
+
|
|
66
|
+
Ainda não nesta versão: imagem no corpo do texto, link clicável, sumário, nota de rodapé e
|
|
67
|
+
numeração automática; logotipo em JPEG ou SVG; ler ou regravar um modelo `.dotx`; mais de um
|
|
68
|
+
perfil por projeto na entrega; PDF direto (o Word salva como PDF). O resultado foi conferido no
|
|
69
|
+
Word; no LibreOffice e no Google Docs, não.
|
|
70
|
+
|
|
71
|
+
### Added
|
|
72
|
+
- **Documento Word.** O texto em markdown (`.md` ou `.txt`) vira um arquivo do Word (`.docx`) com
|
|
73
|
+
as mesmas palavras e os mesmos números, na mesma ordem. No chat: `/opencrew documento <arquivo>`
|
|
74
|
+
(ou "Documento Word" no menu). No terminal:
|
|
75
|
+
`node _opencrew/core/scripts/documento.mjs "<arquivo.md>"`. O Word sai ao lado do texto, com o
|
|
76
|
+
mesmo nome; `--saida` escolhe outra pasta ou outro nome. Antes, quem precisava de um documento
|
|
77
|
+
oficial mantinha um script à parte, com o texto dentro do código.
|
|
78
|
+
- **Papel timbrado (perfil de documento oficial).** Um arquivo de texto do projeto,
|
|
79
|
+
`_opencrew/_memory/documento-oficial.md`, guarda o logotipo (PNG), três linhas de cabeçalho, o
|
|
80
|
+
rodapé com "Página X de Y", as margens, a fonte e o tamanho da letra. Na primeira vez a IA
|
|
81
|
+
pergunta se você quer configurar e preenche o arquivo com as suas respostas; `--criar-perfil`
|
|
82
|
+
cria o arquivo a partir do modelo. O `update` não toca nele, e nenhum comando o sobrescreve.
|
|
83
|
+
- **Três marcações para documento.** `::: titulo` e `::: subtitulo` (centralizados),
|
|
84
|
+
`::: quebra-de-pagina` (o anexo começa em página nova) e `::: assinaturas` … `:::` (as linhas
|
|
85
|
+
de assinatura, duas por linha, com o nome e o cargo). Títulos `#`, `##` e `###`, tabelas, listas,
|
|
86
|
+
negrito e itálico saem como estilos do Word.
|
|
87
|
+
- **O texto oficial não muda.** Número de item escrito por você ("1.", "6.1.", "a)", "§ 1º") vai
|
|
88
|
+
como texto: nada é renumerado, reordenado nem corrigido.
|
|
89
|
+
- **Na entrega, a pasta `documentos/`.** O passo com `format: documento-oficial` sai como
|
|
90
|
+
`entrega/documentos/<nome>.docx`, com o papel timbrado do projeto, e o LEIA-ME ganha a seção
|
|
91
|
+
"Documentos", com o que conferir no Word. Sem papel timbrado configurado, a entrega avisa e
|
|
92
|
+
diz como criar. A cópia para a pasta do projeto leva `documentos/`
|
|
93
|
+
junto.
|
|
94
|
+
- **Guia `documento-oficial`** (o 23º guia de melhores práticas): ensina o redator a escrever um
|
|
95
|
+
texto que vira documento — um parágrafo por linha, número escrito à mão, anexo depois da quebra
|
|
96
|
+
de página, assinaturas no fim. Crews novas recebem esse formato no passo cujo resultado é um
|
|
97
|
+
documento para imprimir, assinar ou protocolar.
|
|
98
|
+
- **Avisos de conversão.** O relatório diz o que ficou como texto (imagem, marcação `:::`
|
|
99
|
+
desconhecida, bloco de assinaturas sem o `:::` final) e quantos caracteres inválidos foram
|
|
100
|
+
removidos. Aviso não impede o documento.
|
|
101
|
+
|
|
102
|
+
### Changed
|
|
103
|
+
- **Um Word que já existe não é trocado em silêncio.** Se há um `.docx` diferente no destino, nada
|
|
104
|
+
é gravado e a IA pergunta antes de substituir (`--substituir`). Igual, byte a byte: nada a fazer.
|
|
105
|
+
- **Perfil com erro não gera documento.** Chave desconhecida, valor fora da faixa, logotipo que
|
|
106
|
+
não existe, não é PNG ou passa de 2 MB: a mensagem diz a linha, e nada é gravado.
|
|
107
|
+
- O menu "Mais opções" ganha "Documento Word".
|
|
108
|
+
|
|
109
|
+
### Internal
|
|
110
|
+
- `documento.mjs` e os módulos de `scripts/documento/` (sem dependência, sem `node:zlib`, até 200
|
|
111
|
+
linhas cada): zip sem compressão, com CRC-32 próprio e data fixa — o mesmo texto, com o mesmo
|
|
112
|
+
perfil, dá o mesmo arquivo, byte a byte. `modelos/documento-oficial.md` é o modelo do perfil;
|
|
113
|
+
`prompts/documento.prompt.md`, o prompt da rota. O `src/` não mudou; o runner não cresceu (874
|
|
114
|
+
linhas).
|
|
115
|
+
- `AGENTS.md`: a regra 15 cita o `documento.mjs`; a regra 7 diz que abrir o `.docx` no Word não é
|
|
116
|
+
conferido pela porta.
|
|
117
|
+
|
|
6
118
|
## [1.9.0] — 2026-10-07
|
|
7
119
|
|
|
8
120
|
Fase U3a, fatia 2 "Entrega no projeto" (`specs/fase-u3a2-entrega-no-projeto.md`). Chega a quem já
|
package/README.md
CHANGED
|
@@ -36,6 +36,9 @@ dentro da sua IDE.**
|
|
|
36
36
|
colar, as imagens e um `LEIA-ME.md` com o passo a passo. O que não está pronto fica marcado.
|
|
37
37
|
- 📁 **Entrega no seu projeto** — a crew pergunta uma vez onde guardar e copia a entrega para uma
|
|
38
38
|
pasta do seu projeto, uma subpasta por execução, sem sobrescrever nada.
|
|
39
|
+
- 📄 **Documento Word em papel timbrado** — ata, ofício, declaração: o texto em markdown vira um
|
|
40
|
+
arquivo do Word com as mesmas palavras, o seu logotipo no cabeçalho, "Página X de Y" no rodapé
|
|
41
|
+
e as linhas de assinatura. Um comando: `/opencrew documento <arquivo>`.
|
|
39
42
|
- 🎛️ **Seleção inteligente de agentes** — o sistema analisa seu pedido e
|
|
40
43
|
sugere quais agentes são necessários para aquela tarefa. Você confirma ou
|
|
41
44
|
ajusta com um clique. Agentes pulados não gastam tokens naquele run.
|
|
@@ -181,10 +184,12 @@ meu-projeto/
|
|
|
181
184
|
│ │ ├── runner.pipeline.md ← executor de pipeline
|
|
182
185
|
│ │ ├── skills.engine.md ← gerenciador de skills
|
|
183
186
|
│ │ ├── architect.agent.yaml ← definição do Arquiteto
|
|
184
|
-
│ │ ├──
|
|
185
|
-
│ │ ├──
|
|
187
|
+
│ │ ├── formato-da-crew.md ← o formato dos arquivos de uma crew (crew.yaml, pipeline.yaml, passos)
|
|
188
|
+
│ │ ├── best-practices/ ← 23 guias de melhores práticas + _catalog.yaml
|
|
189
|
+
│ │ ├── scripts/ ← verificador, conferência de fontes, caminhos, entrega, documento Word, conserto de crews e os scripts do Escritório
|
|
190
|
+
│ │ ├── modelos/ ← modelo do perfil de documento oficial (papel timbrado)
|
|
186
191
|
│ │ ├── escritorio/ ← página do Escritório ao vivo (abre com /opencrew dashboard)
|
|
187
|
-
│ │ └── prompts/ ←
|
|
192
|
+
│ │ └── prompts/ ← 15 prompts de fase (discovery, design, build, entrega, documento, etc.)
|
|
188
193
|
│ ├── agents/ ← 5 agentes base compartilhados
|
|
189
194
|
│ │ ├── researcher.agent.md
|
|
190
195
|
│ │ ├── copywriter.agent.md
|
|
@@ -193,7 +198,8 @@ meu-projeto/
|
|
|
193
198
|
│ │ └── strategist.agent.md
|
|
194
199
|
│ ├── _memory/
|
|
195
200
|
│ │ ├── company.md ← perfil da sua empresa (onboarding)
|
|
196
|
-
│ │
|
|
201
|
+
│ │ ├── preferences.md ← idioma, tier padrão, Escritório ligado ou desligado
|
|
202
|
+
│ │ └── documento-oficial.md ← seu papel timbrado (só existe depois que você pede; veja "Documento Word")
|
|
197
203
|
│ └── .opencrew-version
|
|
198
204
|
│
|
|
199
205
|
├── crews/ ← suas crews vivem aqui
|
|
@@ -231,6 +237,7 @@ entrega/
|
|
|
231
237
|
├── whatsapp/ ← mensagem.txt
|
|
232
238
|
├── twitter/ ← tweet.txt (na thread: tweet-1.txt, tweet-2.txt…)
|
|
233
239
|
├── youtube/ ← o roteiro
|
|
240
|
+
├── documentos/ ← o Word (.docx) de cada texto de formato documento-oficial
|
|
234
241
|
├── outros/ ← arquivo sem canal (proposta, minuta, relatório), como está
|
|
235
242
|
└── editaveis/ ← o HTML dos slides, para quem quiser ajustar
|
|
236
243
|
```
|
|
@@ -286,6 +293,83 @@ são sempre em português.
|
|
|
286
293
|
|
|
287
294
|
---
|
|
288
295
|
|
|
296
|
+
## Documento Word
|
|
297
|
+
|
|
298
|
+
Ata, ofício, declaração, contrato: quando o resultado é um documento para imprimir, assinar ou
|
|
299
|
+
protocolar, o OpenCrew transforma o texto em markdown num arquivo do Word (`.docx`) com **as
|
|
300
|
+
mesmas palavras e os mesmos números, na mesma ordem**. Você escreve (ou a crew escreve) o texto;
|
|
301
|
+
um comando gera o documento.
|
|
302
|
+
|
|
303
|
+
**Como gerar:** no chat da sua IDE, digite `/opencrew documento Atas/ata.md` — ou escolha
|
|
304
|
+
"Documento Word" em "Mais opções" do menu. O Word sai ao lado do texto, com o mesmo nome
|
|
305
|
+
(`Atas/ata.docx`), e a IA mostra o relatório: onde gravou, qual papel timbrado usou e os avisos.
|
|
306
|
+
Também funciona direto no terminal, na pasta do projeto:
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
node _opencrew/core/scripts/documento.mjs "Atas/ata.md"
|
|
310
|
+
node _opencrew/core/scripts/documento.mjs "Atas/ata.md" --saida "Documentos/Prontos"
|
|
311
|
+
node _opencrew/core/scripts/documento.mjs --criar-perfil # cria o arquivo do papel timbrado
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
**Papel timbrado.** Na primeira vez, a IA pergunta se você quer configurar o papel timbrado do
|
|
315
|
+
projeto. Com o "sim", ela cria o perfil de documento oficial em
|
|
316
|
+
`_opencrew/_memory/documento-oficial.md`, pergunta o logotipo, as linhas do cabeçalho e o rodapé
|
|
317
|
+
e preenche o arquivo. É um arquivo de texto, seu, que o `update` nunca toca. Nele ficam:
|
|
318
|
+
|
|
319
|
+
- o logotipo (um PNG de até 2 MB, dentro do projeto) e a largura dele;
|
|
320
|
+
- três linhas de cabeçalho (nome da organização, registro, site e contato);
|
|
321
|
+
- o texto do rodapé e o "Página X de Y";
|
|
322
|
+
- as margens, a fonte e o tamanho da letra.
|
|
323
|
+
|
|
324
|
+
Com o "não", o documento sai sem timbre, com as margens padrão e "Página X de Y" no rodapé. É um
|
|
325
|
+
perfil por projeto; mudar o perfil não muda os documentos já gerados.
|
|
326
|
+
|
|
327
|
+
**Como escrever o texto.** Markdown comum, um parágrafo por linha, com três marcações a mais:
|
|
328
|
+
|
|
329
|
+
```
|
|
330
|
+
::: titulo ATA DA REUNIÃO DA DIRETORIA
|
|
331
|
+
::: subtitulo Realizada em 5 de maio de 2026
|
|
332
|
+
|
|
333
|
+
# I. Abertura
|
|
334
|
+
Aos 5 dias do mês de maio de 2026, reuniu-se a diretoria.
|
|
335
|
+
|
|
336
|
+
::: assinaturas
|
|
337
|
+
Ana Lima | Presidente
|
|
338
|
+
Rui Sá | Secretário
|
|
339
|
+
:::
|
|
340
|
+
|
|
341
|
+
::: quebra-de-pagina
|
|
342
|
+
::: titulo ANEXO I — CALENDÁRIO
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
- `::: titulo` e `::: subtitulo` saem centralizados; `#`, `##` e `###` viram os títulos das
|
|
346
|
+
seções; tabela vira tabela; `- item` vira lista com marcador.
|
|
347
|
+
- `::: quebra-de-pagina` começa uma página nova (para o anexo); `::: assinaturas`, uma linha
|
|
348
|
+
`Nome | Cargo` por pessoa e `:::` para fechar montam as linhas de assinatura.
|
|
349
|
+
- **Os números são os seus.** "1.", "6.1.", "a)" e "§ 1º" vão como texto, do jeito que você
|
|
350
|
+
escreveu: nada é renumerado, reordenado nem corrigido.
|
|
351
|
+
- **Nada é trocado sem você saber.** Se já existe um Word diferente com esse nome (você pode tê-lo
|
|
352
|
+
editado), nada é gravado: a IA pergunta antes de substituir.
|
|
353
|
+
- **Avisos de conversão.** O relatório diz o que não coube no documento e ficou como texto: imagem,
|
|
354
|
+
marcação `:::` desconhecida, bloco de assinaturas sem o `:::` final. Perfil com erro (chave
|
|
355
|
+
desconhecida, logotipo que não existe) não gera documento: a mensagem diz a linha.
|
|
356
|
+
- **O Word é uma cópia do texto.** O que você mudar no Word não volta para o texto: altere o texto
|
|
357
|
+
e gere de novo. Para ter um PDF, abra o documento no Word e use Salvar como PDF.
|
|
358
|
+
|
|
359
|
+
**Dentro de uma crew.** O passo cujo resultado é um documento usa `format: documento-oficial` (o
|
|
360
|
+
guia que ensina o redator a escrever assim). Na entrega, esse texto vira
|
|
361
|
+
`entrega/documentos/<nome>.docx`, com o papel timbrado do projeto, e o LEIA-ME diz o que conferir.
|
|
362
|
+
Crews novas já nascem assim; numa crew antiga, acrescente `format: documento-oficial` ao passo.
|
|
363
|
+
|
|
364
|
+
**O que não faz.** Não põe imagem no corpo do texto, link clicável, sumário, nota de rodapé nem
|
|
365
|
+
numeração automática; o logotipo é só PNG; tamanhos e cores dos títulos são fixos; não lê nem
|
|
366
|
+
regrava um modelo `.dotx`. Os testes conferem a estrutura do arquivo; como ele fica na página,
|
|
367
|
+
você confere no Word. No LibreOffice e no Google Docs o resultado não foi conferido.
|
|
368
|
+
|
|
369
|
+
Quem já usa o OpenCrew recebe o documento Word com um `npx @aksp/opencrew@latest update`.
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
289
373
|
## Escritório ao vivo
|
|
290
374
|
|
|
291
375
|
Quer ver a equipe trabalhando? O **Escritório** é uma página em pixel-art, aberta no navegador,
|
|
@@ -354,6 +438,13 @@ o que você fez:
|
|
|
354
438
|
`# opencrew:end`)? Nenhuma linha sua é apagada: o `update` guarda o arquivo como estava e põe
|
|
355
439
|
um bloco completo no fim. O bloco começa por um comentário que diz que ele é do OpenCrew: as
|
|
356
440
|
suas linhas ficam fora dele.
|
|
441
|
+
- **E as crews que você já tinha?** O `update` não mexe nelas. Para levar a elas o que veio
|
|
442
|
+
depois — o formato de cada texto (sem ele o verificador mede tudo como post de blog), os
|
|
443
|
+
arquivos do projeto que a crew deve ler, as proibições que o verificador consegue barrar —,
|
|
444
|
+
peça na sua IDE `/opencrew repair <nome>`. Ele mostra o que falta, pergunta antes de cada
|
|
445
|
+
mudança e deixa uma cópia `.bak` do arquivo que alterou. O que não dá para consertar assim
|
|
446
|
+
(crew sem passo de revisão, publicação antes da revisão) ele aponta e manda para
|
|
447
|
+
`/opencrew edit`.
|
|
357
448
|
- **A instalação anterior parou no meio?** O `update` não altera nada e pede para você rodar
|
|
358
449
|
`npx @aksp/opencrew init`, que conclui a instalação sem apagar o que já existe.
|
|
359
450
|
- **Apagou um modelo de crew ou um skill do catálogo?** Ele volta no `update`, e a saída diz o
|
|
@@ -406,13 +497,14 @@ npx @aksp/opencrew update --check
|
|
|
406
497
|
| `/opencrew run <nome>` | Executa o pipeline de uma crew |
|
|
407
498
|
| `/opencrew list` | Lista todas as suas crews |
|
|
408
499
|
| `/opencrew edit <nome>` | Modifica uma crew existente |
|
|
409
|
-
| `/opencrew repair <nome>` |
|
|
500
|
+
| `/opencrew repair <nome>` | Mostra o que falta numa crew que você já tem (formato de cada texto, arquivos do projeto que ela deve ler, proibições que o verificador consegue barrar, nomes dos agentes) e conserta um ponto por vez, com o seu sim e uma cópia `.bak` |
|
|
410
501
|
| `/opencrew delete <nome>` | Remove uma crew |
|
|
411
502
|
| `/opencrew skills` | Navega, instala ou remove skills |
|
|
412
503
|
| `/opencrew install <skill>` | Instala uma skill do catálogo |
|
|
413
504
|
| `/opencrew settings` | Altera preferências (idioma, tier, Escritório) |
|
|
414
505
|
| `/opencrew dashboard` | Liga e abre o Escritório ao vivo (a equipe trabalhando, no navegador) |
|
|
415
506
|
| `/opencrew dashboard off` | Desliga o Escritório |
|
|
507
|
+
| `/opencrew documento <arquivo>` | Transforma um texto (`.md` ou `.txt`) em documento Word, com o papel timbrado do projeto |
|
|
416
508
|
| `/opencrew show-company` | Mostra o perfil da empresa |
|
|
417
509
|
| `/opencrew edit-company` | Reconfigura o perfil da empresa |
|
|
418
510
|
| `/opencrew help` | Mostra a lista de comandos |
|
|
@@ -425,7 +517,7 @@ npx @aksp/opencrew update --check
|
|
|
425
517
|
| `npx @aksp/opencrew@latest update` | Atualiza o framework |
|
|
426
518
|
| `npx @aksp/opencrew update --check` (ou `--dry-run`) | Verifica se há update disponível, sem alterar nada |
|
|
427
519
|
| `npx @aksp/opencrew upgrade` | Atalho para `update` |
|
|
428
|
-
| `npx @aksp/opencrew init --ide=claude-code,cursor` | Instala só as pontes das IDEs indicadas |
|
|
520
|
+
| `npx @aksp/opencrew init --ide=claude-code,cursor` | Instala só as pontes das IDEs indicadas (também com `--yes`) |
|
|
429
521
|
| `npx @aksp/opencrew init --all` (ou `-y`) | Instala as pontes de todas as IDEs |
|
|
430
522
|
| `npx @aksp/opencrew@latest init --repair-bridges` | Regrava as pontes das IDEs já instaladas num workspace existente (`--ide=a,b`: só as indicadas; `--all`: as 9) |
|
|
431
523
|
| `npx @aksp/opencrew version` | Mostra a versão instalada |
|
package/package.json
CHANGED
package/src/commands/init.js
CHANGED
|
@@ -148,14 +148,13 @@ async function workspaceState(target) {
|
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
/**
|
|
151
|
-
* Decide which IDEs to configure. --
|
|
152
|
-
* nothing → `fallback()` (the interactive prompt; in repair mode, the
|
|
153
|
-
* UsageError if --ide names no valid IDE.
|
|
151
|
+
* Decide which IDEs to configure. --ide → validated list, whatever comes with it; without it,
|
|
152
|
+
* --all / --yes → every IDE; nothing → `fallback()` (the interactive prompt; in repair mode, the
|
|
153
|
+
* detection). Throws UsageError if --ide names no valid IDE.
|
|
154
154
|
*/
|
|
155
155
|
async function resolveIdes(opts, fallback) {
|
|
156
|
-
if (opts.all || opts.yes) return allIdeIds();
|
|
157
156
|
const ids = normalizeIdes(opts.ide);
|
|
158
|
-
if (!ids) return fallback();
|
|
157
|
+
if (!ids) return opts.all || opts.yes ? allIdeIds() : fallback();
|
|
159
158
|
const invalid = ids.filter((id) => !ideById(id));
|
|
160
159
|
const valid = ids.filter((id) => ideById(id));
|
|
161
160
|
if (!valid.length) {
|
package/src/commands/update.js
CHANGED
|
@@ -88,6 +88,7 @@ async function apply(target, version) {
|
|
|
88
88
|
const done = { unreadable, ...(await refreshBridges(ctx)) };
|
|
89
89
|
done.mcp = await updateMcp(ctx, await readFile(tpl('.mcp.json')));
|
|
90
90
|
done.leftovers = await findLeftovers(target);
|
|
91
|
+
done.hasCrew = await hasCrew(target);
|
|
91
92
|
say(updateSummary(ctx, done));
|
|
92
93
|
|
|
93
94
|
await writeManifest(target, version, ctx.files);
|
|
@@ -97,6 +98,13 @@ async function apply(target, version) {
|
|
|
97
98
|
log(c.dim(`${UNTOUCHED}\n`));
|
|
98
99
|
}
|
|
99
100
|
|
|
101
|
+
/** Is there a crew of the user's? A folder of `crews/` with `crew.yaml` (the templates have none). Only looks. */
|
|
102
|
+
async function hasCrew(target) {
|
|
103
|
+
const dirs = await fs.readdir(path.join(target, 'crews'), { withFileTypes: true }).catch(() => []);
|
|
104
|
+
const found = await Promise.all(dirs.filter((d) => d.isDirectory()).map((d) => exists(path.join(target, 'crews', d.name, 'crew.yaml'))));
|
|
105
|
+
return found.includes(true);
|
|
106
|
+
}
|
|
107
|
+
|
|
100
108
|
/** @returns what `deliverTree` did to each crew template (only the missing ones are written). */
|
|
101
109
|
async function refreshFramework(ctx) {
|
|
102
110
|
const dest = (...p) => path.join(ctx.target, ...p);
|
package/src/lib/resumo.js
CHANGED
|
@@ -18,6 +18,9 @@ export const ALREADY_INSTALLED = 'Para atualizar, rode `npx @aksp/opencrew@lates
|
|
|
18
18
|
/** `update` over `_opencrew/core` with no version stamp (spec U3a-2, rule 31). */
|
|
19
19
|
export const INTERRUPTED = 'A instalação anterior não terminou. Rode `npx @aksp/opencrew init` para concluir.';
|
|
20
20
|
|
|
21
|
+
/** After an `update`, when the project has at least one crew (spec U4-1, decision 7). */
|
|
22
|
+
export const REPAIR_HINT = 'Para levar as melhorias novas às crews que você já tem, peça na sua IDE: /opencrew repair';
|
|
23
|
+
|
|
21
24
|
const NO_BRIDGES = 'Nenhuma ponte de IDE encontrada: nada a atualizar. Para criar a ponte de uma IDE: `npx @aksp/opencrew@latest init --repair-bridges --ide=<id>`.';
|
|
22
25
|
const LEAK_REMOVED = 'CLAUDE.md: removi a seção de STATUS.md que as versões 1.4.0 e 1.4.1 gravaram por engano.';
|
|
23
26
|
const FIRST_PROTECTED = 'Primeira atualização com proteção: sem registro anterior, guardamos tudo o que diferia. Daqui em diante, só o que você editar.';
|
|
@@ -112,7 +115,7 @@ function copyLines(ctx, unreadable) {
|
|
|
112
115
|
* @param {object} done what each step returned: `agents` and `gitignore` (deliverBlock; `agents`
|
|
113
116
|
* is null when a pre-1.3 AGENTS.md was migrated), `ides` (detected), `bridges` (deliverBridges),
|
|
114
117
|
* `leak` (the STATUS.md section left CLAUDE.md's block), `mcp` (updateMcp), `leftovers`
|
|
115
|
-
* (findLeftovers)
|
|
118
|
+
* (findLeftovers), `unreadable` (manifest) and `hasCrew` (a folder of `crews/` with `crew.yaml`)
|
|
116
119
|
* @returns {Array<[Function, string]>} lines for `say`
|
|
117
120
|
*/
|
|
118
121
|
export function updateSummary(ctx, done) {
|
|
@@ -124,5 +127,6 @@ export function updateSummary(ctx, done) {
|
|
|
124
127
|
...mcpLines(ctx, done.mcp),
|
|
125
128
|
...leftoverLines(done.leftovers, done.mcp),
|
|
126
129
|
...copyLines(ctx, done.unreadable),
|
|
130
|
+
...(done.hasCrew ? [[info, REPAIR_HINT]] : []),
|
|
127
131
|
];
|
|
128
132
|
}
|
package/templates/AGENTS.md
CHANGED
|
@@ -10,6 +10,8 @@ On activation, perform these steps IN ORDER:
|
|
|
10
10
|
1. Read the company context file: `{project-root}/_opencrew/_memory/company.md`
|
|
11
11
|
2. Read the preferences file: `{project-root}/_opencrew/_memory/preferences.md`
|
|
12
12
|
3. Check if company.md is empty or contains only the template — if so, trigger ONBOARDING
|
|
13
|
+
(except for `/opencrew documento` and the request to deliver a run that already ended: neither
|
|
14
|
+
uses the company context)
|
|
13
15
|
4. Otherwise, display the MAIN MENU
|
|
14
16
|
|
|
15
17
|
## Onboarding Flow (first time only)
|
|
@@ -36,7 +38,10 @@ numbered list and ask the user to reply with a number.
|
|
|
36
38
|
**Primary menu:** Create a new crew · Run an existing crew · My crews ·
|
|
37
39
|
More options
|
|
38
40
|
|
|
39
|
-
**More options:** Skills · Company profile · Settings & Help
|
|
41
|
+
**More options:** Skills · Documento Word · Company profile · Settings & Help
|
|
42
|
+
|
|
43
|
+
"Documento Word" turns a text file of the project into a Word document: load
|
|
44
|
+
`_opencrew/core/prompts/documento.prompt.md`, which asks for the file.
|
|
40
45
|
|
|
41
46
|
## Command Routing
|
|
42
47
|
|
|
@@ -46,11 +51,11 @@ Route input to the matching action:
|
|
|
46
51
|
|---------------|--------|
|
|
47
52
|
| `/opencrew` or `/opencrew menu` | Show main menu |
|
|
48
53
|
| `/opencrew help` | Show help text |
|
|
49
|
-
| `/opencrew create <description>` | Load Architect → Create Crew flow |
|
|
50
|
-
| `/opencrew list` | List all crews in `crews/` |
|
|
54
|
+
| `/opencrew create <description>` | Load the Architect (`_opencrew/core/architect.agent.yaml`) → Create Crew flow: one prompt per phase, listed there |
|
|
55
|
+
| `/opencrew list` | List all crews in `crews/` (a folder without `crew.yaml` is not a crew) |
|
|
51
56
|
| `/opencrew run <name>` | Load Pipeline Runner → Execute crew |
|
|
52
|
-
| `/opencrew edit <name> <changes>` | Load Architect → Edit Crew flow |
|
|
53
|
-
| `/opencrew repair <name>` | Load `_opencrew/core/prompts/repair.prompt.md` → fix
|
|
57
|
+
| `/opencrew edit <name> <changes>` | Load the Architect → Edit Crew flow |
|
|
58
|
+
| `/opencrew repair <name>` | Load `_opencrew/core/prompts/repair.prompt.md` → show what an existing crew is missing and fix one point at a time, each with a `.bak` copy |
|
|
54
59
|
| `/opencrew skills` | Load Skills Engine → Show skills menu |
|
|
55
60
|
| `/opencrew install <name>` | Install a skill from the catalog |
|
|
56
61
|
| `/opencrew uninstall <name>` | Remove an installed skill |
|
|
@@ -60,6 +65,7 @@ Route input to the matching action:
|
|
|
60
65
|
| `/opencrew settings` | Show/edit preferences.md |
|
|
61
66
|
| `/opencrew dashboard` | Turn on and open the Escritório (live view) — see "Dashboard (Optional)" |
|
|
62
67
|
| `/opencrew dashboard off` | Turn the Escritório off — see "Dashboard (Optional)" |
|
|
68
|
+
| `/opencrew documento <arquivo>` | Load `_opencrew/core/prompts/documento.prompt.md` → turn that text file (`.md` or `.txt`) into a Word document (`.docx`) |
|
|
63
69
|
| `/opencrew reset` | Confirm and reset all configuration |
|
|
64
70
|
| Request to deliver a run that already ended ("monte a entrega da execução …") | Load `_opencrew/core/prompts/entrega.prompt.md` → build the `entrega/` folder of that run |
|
|
65
71
|
| Request to change where the delivery is copied ("muda a pasta de entrega", "não quero mais cópia", "volta a copiar") | Load `_opencrew/core/prompts/entrega.prompt.md` → "Changing the folder later" |
|
|
@@ -69,7 +75,8 @@ Route input to the matching action:
|
|
|
69
75
|
|
|
70
76
|
When a specific agent needs to be activated:
|
|
71
77
|
|
|
72
|
-
1. Read the agent's `.agent.md` file completely
|
|
78
|
+
1. Read the agent's `.agent.md` file completely (the Architect is the exception: it lives in
|
|
79
|
+
`_opencrew/core/architect.agent.yaml`)
|
|
73
80
|
2. Adopt the agent's persona (role, identity, communication_style, principles)
|
|
74
81
|
3. Follow the agent's menu/workflow instructions
|
|
75
82
|
4. When the agent's task is complete, return to the opencrew main context
|
|
@@ -124,10 +131,13 @@ and touch nothing else: stop no process, delete no file.
|
|
|
124
131
|
see `_opencrew/core/runner.pipeline.md`
|
|
125
132
|
- Exception: the delivery folder (`entrega/`) — its folder names, file names and the `LEIA-ME.md`
|
|
126
133
|
are written by a script in fixed PT-BR, whatever the user's language
|
|
134
|
+
- Exception: the report of the Word document script (`documento.mjs`) and the "Página X de Y" of
|
|
135
|
+
the footer it writes are fixed PT-BR too
|
|
127
136
|
|
|
128
137
|
## Critical Rules
|
|
129
138
|
|
|
130
|
-
- NEVER skip the onboarding if company.md is not configured
|
|
139
|
+
- NEVER skip the onboarding if company.md is not configured (the Word document route is the only
|
|
140
|
+
exception: it does not use the company context)
|
|
131
141
|
- ALWAYS load company context before running any crew
|
|
132
142
|
- ALWAYS present checkpoints to the user — never skip them
|
|
133
143
|
- ALWAYS save outputs to the crew's output directory
|
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.11.0
|
|
@@ -57,24 +57,30 @@ agent:
|
|
|
57
57
|
create-crew: |
|
|
58
58
|
## Create Crew
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
60
|
+
Creating a crew takes four phases, in this order. Each phase is one prompt: read it
|
|
61
|
+
completely when its turn comes, follow it to the end, and only then load the next one.
|
|
62
|
+
|
|
63
|
+
1. `_opencrew/core/prompts/discovery.prompt.md` — Discovery: the questions; ends by
|
|
64
|
+
writing `crews/{code}/_build/discovery.yaml`
|
|
65
|
+
2. `_opencrew/core/prompts/sherlock-shared.md` — Investigation: ONLY when the discovery
|
|
66
|
+
ended with the investigation enabled; it names the platform prompt to load with it
|
|
67
|
+
3. `_opencrew/core/prompts/design.prompt.md` — Design: agents and pipeline (includes the
|
|
68
|
+
optional template selection); ends by writing `crews/{code}/_build/design.yaml`
|
|
69
|
+
4. `_opencrew/core/prompts/build.prompt.md` — Build: writes the crew files, in the format
|
|
70
|
+
of `_opencrew/core/formato-da-crew.md`, and validates them
|
|
71
|
+
|
|
72
|
+
If your IDE can run a phase as a subagent, you may; otherwise run the phases one after
|
|
73
|
+
the other in this conversation. Never skip a phase and never write crew files before
|
|
74
|
+
the Build.
|
|
71
75
|
|
|
72
76
|
edit-crew: |
|
|
73
77
|
## Edit Crew Workflow
|
|
74
78
|
|
|
75
|
-
1. Ask which crew to edit (list available crews if not specified
|
|
79
|
+
1. Ask which crew to edit (list available crews if not specified; a folder without
|
|
80
|
+
crew.yaml is not a crew).
|
|
76
81
|
If only 1 crew exists, add "Cancel" as a second option. If 0 crews, inform user directly.
|
|
77
|
-
2. Read the crew's crew.yaml to understand current structure
|
|
82
|
+
2. Read the crew's crew.yaml to understand current structure (the format of the crew
|
|
83
|
+
files is in `_opencrew/core/formato-da-crew.md`)
|
|
78
84
|
3. Ask what changes the user wants
|
|
79
85
|
4. **If the user asks to edit/define/change the visual template or identity of a design agent:**
|
|
80
86
|
- Read and follow `skills/template-designer/SKILL.md`
|
|
@@ -86,8 +92,10 @@ agent:
|
|
|
86
92
|
list-crews: |
|
|
87
93
|
## List Crews Workflow
|
|
88
94
|
|
|
89
|
-
1. Read all directories in crews
|
|
90
|
-
|
|
95
|
+
1. Read all directories in crews/. A folder without crew.yaml is not a crew (the
|
|
96
|
+
template folders installed with the product): leave it out
|
|
97
|
+
2. For each crew, read crew.yaml to get name, description and icon (inside `crew:` or,
|
|
98
|
+
in older crews, loose at the top level) and count the agents in crew-party.csv
|
|
91
99
|
3. Present as a formatted list:
|
|
92
100
|
```
|
|
93
101
|
Your Crews:
|
|
@@ -102,7 +110,8 @@ agent:
|
|
|
102
110
|
delete-crew: |
|
|
103
111
|
## Delete Crew Workflow
|
|
104
112
|
|
|
105
|
-
1. Ask which crew to delete (list available if not specified
|
|
113
|
+
1. Ask which crew to delete (list available if not specified; a folder without
|
|
114
|
+
crew.yaml is not a crew).
|
|
106
115
|
If only 1 crew exists, add "Cancel" as a second option. If 0 crews, inform user directly.
|
|
107
116
|
2. Show crew details (name, agents, output count)
|
|
108
117
|
3. Confirm deletion with explicit "Are you sure?" presented as a numbered list (1. Yes, delete / 2. No, cancel)
|
|
@@ -114,3 +114,8 @@ catalog:
|
|
|
114
114
|
name: "WhatsApp Broadcast"
|
|
115
115
|
whenToUse: "Creating agents that produce WhatsApp broadcast messages or conversational marketing content."
|
|
116
116
|
file: whatsapp-broadcast.md
|
|
117
|
+
|
|
118
|
+
- id: documento-oficial
|
|
119
|
+
name: "Documento oficial (Word)"
|
|
120
|
+
whenToUse: "Creating agents that produce a document to print, sign or file (minutes, official letter, statement, contract, formal report) that becomes a Word file."
|
|
121
|
+
file: documento-oficial.md
|