@spec-wave/cli 0.14.0 → 0.16.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/README.md +1 -0
- package/bin/spec-wave.mjs +44 -2
- package/package.json +8 -2
- package/src/agent/anthropic-agent.mjs +337 -0
- package/src/agent/errors.mjs +33 -0
- package/src/agent/index.mjs +108 -0
- package/src/agent/openrouter-agent.mjs +378 -0
- package/src/agent/run-types.mjs +59 -0
- package/src/agent/telemetry.mjs +54 -0
- package/src/agent/tools.mjs +452 -0
- package/src/agent/tracing.mjs +106 -0
- package/src/api/github-rest.mjs +206 -2
- package/src/commands/bug.mjs +8 -0
- package/src/commands/code-review.mjs +45 -4
- package/src/commands/decompose.mjs +11 -49
- package/src/commands/dev-agent.mjs +3 -3
- package/src/commands/doctor.mjs +77 -6
- package/src/commands/generate-bug.mjs +195 -0
- package/src/commands/generate-plan.mjs +6 -20
- package/src/commands/generate-spec.mjs +6 -22
- package/src/commands/implement.mjs +105 -2
- package/src/commands/init.mjs +3 -3
- package/src/commands/install-skill.mjs +72 -16
- package/src/commands/issue.mjs +9 -7
- package/src/commands/move.mjs +11 -1
- package/src/commands/qa.mjs +23 -2
- package/src/commands/refresh.mjs +145 -5
- package/src/commands/triage.mjs +174 -0
- package/src/commands/update.mjs +352 -62
- package/src/commands/validate.mjs +82 -10
- package/src/config.mjs +159 -1
- package/src/lib/bug-context.mjs +160 -0
- package/src/lib/bug-doc.mjs +51 -0
- package/src/lib/bug-triage.mjs +81 -0
- package/src/lib/claude.mjs +71 -254
- package/src/lib/critique.mjs +43 -30
- package/src/lib/implement-board.mjs +12 -1
- package/src/lib/plugin-skills.mjs +122 -0
- package/src/lib/pr-branch.mjs +267 -0
- package/src/lib/prompt-loader.mjs +257 -0
- package/src/lib/skill-file.mjs +35 -0
- package/src/plugin/.claude-plugin/plugin.json +20 -0
- package/src/plugin/README.md +73 -0
- package/src/plugin/skills/bug/SKILL.md +60 -0
- package/src/plugin/skills/bug/model-prompt.critique.md +48 -0
- package/src/plugin/skills/bug/model-prompt.md +74 -0
- package/src/plugin/skills/decompose/SKILL.md +111 -0
- package/src/plugin/skills/decompose/model-prompt.critique.md +46 -0
- package/src/plugin/skills/decompose/model-prompt.feature.md +69 -0
- package/src/plugin/skills/decompose/model-prompt.rfc.md +52 -0
- package/src/plugin/skills/doctor/SKILL.md +51 -0
- package/src/plugin/skills/fix-pr/SKILL.md +130 -0
- package/src/plugin/skills/implement/SKILL.md +102 -0
- package/src/plugin/skills/info/SKILL.md +40 -0
- package/src/plugin/skills/issue/SKILL.md +63 -0
- package/src/plugin/skills/move/SKILL.md +52 -0
- package/src/plugin/skills/order/SKILL.md +36 -0
- package/src/plugin/skills/plan/SKILL.md +53 -0
- package/src/plugin/skills/plan/model-prompt.critique.md +44 -0
- package/src/plugin/skills/plan/model-prompt.md +59 -0
- package/src/plugin/skills/plan/reference/tech-context.md +56 -0
- package/src/plugin/skills/ready/SKILL.md +44 -0
- package/src/plugin/skills/rfc/SKILL.md +47 -0
- package/src/plugin/skills/setup/SKILL.md +67 -0
- package/src/plugin/skills/spec/SKILL.md +37 -0
- package/src/plugin/skills/spec/model-prompt.md +61 -0
- package/src/plugin/skills/story/SKILL.md +49 -0
- package/src/plugin/skills/task/SKILL.md +41 -0
- package/src/plugin/skills/triage/SKILL.md +52 -0
- package/src/plugin/skills/uninstall/SKILL.md +43 -0
- package/src/plugin/skills/update/SKILL.md +51 -0
- package/src/plugin/skills/workflow/SKILL.md +154 -0
- package/src/templates/skill/SKILL.md +69 -7
- package/src/templates/workflows/generate-bug.yml +36 -0
- package/src/templates/workflows/validate.yml +2 -1
- package/src/ui/wizard.mjs +5 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-wave
|
|
3
3
|
description: "Use when the user wants to set up a spec-driven GitHub workflow, create a Feature issue, generate spec.md or plan.md, decompose a Feature into Stories/Tasks, write RFC documentation, or audit and fix a Pull Request. Implements the RFC-001 workflow with GitHub Projects v2, labels, and AI-powered GitHub Actions."
|
|
4
|
-
argument-hint: "[info|setup|update|doctor|issue|feature|spec|plan|ready|decompose|order|implement|task|story|move|uninstall|rfc|fix-pr] [target]"
|
|
4
|
+
argument-hint: "[info|setup|update|doctor|issue|feature|spec|plan|ready|decompose|order|implement|task|story|move|uninstall|rfc|bug|triage|fix-pr] [target]"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools:
|
|
7
7
|
- Bash(npx @spec-wave/cli@latest *)
|
|
@@ -76,7 +76,7 @@ Exceção: se o usuário pedir explicitamente para revisar ou melhorar um docume
|
|
|
76
76
|
## Fluxo Kanban
|
|
77
77
|
|
|
78
78
|
```
|
|
79
|
-
📥 Backlog → 🎯 Priorizado → 📋 Spec → 📋 Plan → ✅ Ready
|
|
79
|
+
📥 Backlog → 🐞 Triagem → 🎯 Priorizado → 📋 Spec → 📋 Plan → ✅ Ready
|
|
80
80
|
→ 🚧 Desenvolvimento → 👀 Code Review
|
|
81
81
|
→ 🧪 QA → 📋 Homologação → 🚀 Deploy → 🎉 Done
|
|
82
82
|
```
|
|
@@ -90,7 +90,7 @@ Essa é a sequência completa, mas **cada tipo de artefato percorre só um trech
|
|
|
90
90
|
| **Story** | **✅ Ready** (criada pelo `decompose-apply`) | 🚧 Desenvolvimento → 👀 Code Review → 🧪 QA → 📋 Homologação → 🎉 Done | **Nunca nasce em 📥 Backlog.** |
|
|
91
91
|
| **Task** | **✅ Ready** (criada pelo `decompose-apply`) | 🚧 Desenvolvimento → 🎉 Done | **Não** passa por Code Review, QA nem Homologação — só `task start` e `task done`. |
|
|
92
92
|
| **RFC** | 📥 Backlog | decompõe direto em **Tasks** (que nascem em ✅ Ready) | Não usa spec/plan. |
|
|
93
|
-
| **Bug** |
|
|
93
|
+
| **Bug** | **🐞 Triagem** (reportado) ou **✅ Ready** (achado em QA/Homologação/review) | ✅ Ready → 🚧 Desenvolvimento → 👀 Code Review → 🧪 QA → 🚀 Deploy → 🎉 Done | Não passa por 🎯 Priorizado, 📋 Spec, 📋 Plan nem 📋 Homologação. Bug **P0** nasce direto em ✅ Ready — a triagem é confirmada depois. |
|
|
94
94
|
| **Spike** | 📥 Backlog | **movido só à mão pelo usuário** | Nunca avance a Etapa de um Spike por conta própria. |
|
|
95
95
|
|
|
96
96
|
**Regra da Etapa:** a Etapa **só avança, nunca retrocede**. O campo **Status** (Todo / In Progress / Done) mede o progresso *dentro* da Etapa e reinicia a cada avanço. Prefira sempre os comandos da CLI (`move`, `task start|done`, `story review`) a mutações manuais no board — eles embutem essas regras.
|
|
@@ -101,12 +101,14 @@ Labels de gatilho:
|
|
|
101
101
|
- `spec-wave:ready` → dispara `validate.yml` → valida ambos os arquivos
|
|
102
102
|
- `spec-wave:decompose` → dispara `decompose.yml` → gera (ou **re-critica**) o **rascunho** em `decomposition.md`. **Não cria issue nenhuma.**
|
|
103
103
|
- `spec-wave:decompose-apply` → dispara o mesmo workflow em modo aplicação → cria as Stories e Tasks **a partir do rascunho revisado**
|
|
104
|
+
- `spec-wave:bug` → dispara `generate-bug.yml` → gera `docs/bugs/<slug>/bug.md` (só para issues `[BUG]`)
|
|
104
105
|
|
|
105
106
|
Labels de **estado** (gravadas pelas automações — **não** são gatilhos, não as adicione por conta própria):
|
|
106
107
|
- `spec-wave:decompose-ready` → o rascunho da decomposição passou pela crítica e espera **revisão humana**; aplique `spec-wave:decompose-apply` para criar as issues
|
|
107
108
|
- `spec-wave:critique-failed` → a crítica adversarial apontou contradições **graves**; **bloqueia** o `spec-wave:ready` até ser removida (veja *Crítica adversarial* abaixo)
|
|
108
109
|
- `spec-wave:needs-human` → a crítica reprovou N vezes seguidas (default 3); **para o fluxo** até uma pessoa revisar e remover a label
|
|
109
110
|
- `spec-wave:decomposed` → a Feature/RFC já foi decomposta; o `decompose` pula silenciosamente enquanto ela existir (veja *Guard de idempotência* abaixo)
|
|
111
|
+
- `spec-wave:bug-approved` → o `bug.md` passou na validação das seis seções obrigatórias
|
|
110
112
|
|
|
111
113
|
Label **modificadora** (esta você pode aplicar):
|
|
112
114
|
- `spec-wave:model:<apelido>` → força um modelo específico **naquela execução**, resolvido por `ai.modelAliases` no `.spec-wave.json`. Serve para reprocessar um caso difícil num modelo mais forte sem editar a configuração do repositório inteiro. Duas dessas labels na mesma issue = ambíguo, nenhuma vale.
|
|
@@ -180,11 +182,19 @@ Mesmas flags do `issue` (exceto `--type`, fixo em `feature`). Mantido para o flu
|
|
|
180
182
|
|------|------|-----------|
|
|
181
183
|
| `--global` | flag | Verifica a skill no escopo do usuário (padrão: projeto). |
|
|
182
184
|
| `--skip-skill` / `--skip-config` / `--skip-repo` | flag | Pula a categoria correspondente. |
|
|
185
|
+
| `--branch [nome]` | flag/string | Envia os arquivos do repo como **Pull Request** numa branch, em **um único commit**, em vez de commitar direto na branch default. Sem valor, usa `spec-wave/update-v<versão>`. |
|
|
186
|
+
| `--config-in-pr` / `--no-config-in-pr` | flag | Força incluir/excluir o `.spec-wave.json` do PR (o default decide sozinho — veja abaixo). |
|
|
183
187
|
| `--dry-run` | flag | Mostra o que seria atualizado sem alterar nada. |
|
|
184
188
|
| `--yes` | flag | Aplica sem pedir confirmação. |
|
|
185
189
|
|
|
186
190
|
> Detecta e atualiza **somente o que divergiu** da versão atual da CLI: a **skill** instalada (por agente), o **`.spec-wave.json`** local (se versão/formato divergir) e os **workflows/labels** do repo (compara com os templates empacotados). Interativo por padrão (mostra o plano e confirma). É o atalho recomendado após atualizar a CLI.
|
|
187
191
|
|
|
192
|
+
> **`--branch` (modo Pull Request).** Sem a flag, os arquivos do repo vão em **commits diretos na branch default** — o que falha no meio da execução em repositório com proteção de branch, deixando parte aplicada, e contorna a revisão. Com a flag, todos os arquivos vão em **um commit atômico** numa branch nova e um PR é aberto: se algo falhar antes da criação da branch, **nada** é alterado no repositório. É **idempotente** — rodar duas vezes não gera um segundo commit nem um segundo PR.
|
|
193
|
+
>
|
|
194
|
+
> Duas coisas **não** entram no PR, porque não são versionáveis: as **labels** (metadado do repositório — já valem na base, com ou sem merge) e a **skill** (arquivo em máquina local). O corpo do PR diz isso explicitamente a quem revisa.
|
|
195
|
+
>
|
|
196
|
+
> ⚠️ O modo PR exige **`pull_requests: write`** além de `contents: write` (ou o escopo `repo` num PAT classic). Sem essa permissão, a branch é criada e o PR falha — a mensagem oferece a URL de `compare` para abrir à mão.
|
|
197
|
+
|
|
188
198
|
### `@spec-wave/cli generate-plan` · `generate-spec` · `validate` · `decompose`
|
|
189
199
|
| Flag | Tipo | Descrição |
|
|
190
200
|
|------|------|-----------|
|
|
@@ -417,12 +427,16 @@ Traz tudo para a versão atual da CLI, atualizando **só o que mudou**: a skill
|
|
|
417
427
|
npx @spec-wave/cli@latest update --dry-run
|
|
418
428
|
```
|
|
419
429
|
2. Mostre ao usuário o resumo (skill / config / arquivos do repo / labels que divergiram). Se **nada** estiver desatualizado, informe que já está tudo na versão atual e encerre.
|
|
420
|
-
3.
|
|
430
|
+
3. **Pergunte como os arquivos do repo devem sair** — e prefira o Pull Request:
|
|
421
431
|
```bash
|
|
422
|
-
npx @spec-wave/cli@latest update --yes
|
|
432
|
+
npx @spec-wave/cli@latest update --yes --branch # 1 commit atômico + PR (recomendado)
|
|
433
|
+
npx @spec-wave/cli@latest update --yes # commits diretos na branch default
|
|
423
434
|
```
|
|
424
435
|
- Escopos podem ser limitados com `--skip-skill`, `--skip-config`, `--skip-repo`.
|
|
425
|
-
-
|
|
436
|
+
- **Com `--branch`:** os arquivos do repo vão em **um único commit** numa branch nova e um PR é aberto — nada é escrito na branch default. Passe o link do PR ao usuário e lembre que o merge é dele. Exige `pull_requests: write` no token.
|
|
437
|
+
- **Sem `--branch`:** cada arquivo é um commit direto na branch default. Em repositório com **proteção de branch** isso falha no meio e deixa parte aplicada — nesses casos use `--branch`.
|
|
438
|
+
- **Nos dois modos**, as **labels** são aplicadas direto na base (metadado do repositório, não versionável) e a **skill** é gravada em máquina local. Nenhuma das duas entra no PR.
|
|
439
|
+
- **`.spec-wave.json`:** com `--branch`, ele entra no PR se o repositório **já o versiona**; se não versiona, segue apenas local e o usuário precisa commitá-lo (ou use `--config-in-pr` para passar a versioná-lo). Sem `--branch`, é sempre só local.
|
|
426
440
|
4. Se a skill foi atualizada, oriente recarregar/reiniciar o agente para pegar a nova versão.
|
|
427
441
|
|
|
428
442
|
---
|
|
@@ -650,7 +664,7 @@ Aciona o spec-kit para implementar uma **Feature** (todas as Stories pendentes,
|
|
|
650
664
|
```
|
|
651
665
|
- Se o spec-kit **não** estiver configurado, o comando só monta o contexto e mostra como configurar (`specKit.command` / `SPEC_WAVE_IMPLEMENT_CMD`). Ajude o usuário a definir o template (placeholders: `{tasksFile} {specFile} {planFile} {issue} {type} {title}`).
|
|
652
666
|
- Use `--feature-dir docs/features/<slug>` se a resolução automática da Feature falhar (a skill avisa com warning) e você quiser anexar `spec.md`/`plan.md` como contexto.
|
|
653
|
-
6. **No modo Feature**, siga o contexto Story a Story, na ordem listada: para cada Story pendente, implemente as Tasks com `task start`/`task done`, depois commit + PR + `npx @spec-wave/cli@latest story review <n>`; só então passe à próxima Story. Se a issue
|
|
667
|
+
6. **No modo Feature**, siga o contexto Story a Story, na ordem listada: para cada Story pendente, implemente as Tasks com `task start`/`task done`, depois commit + PR + `npx @spec-wave/cli@latest story review <n>`; só então passe à próxima Story. **Bug** tem modo próprio (RFC-004): sem tasks e sem spec/plan, com quatro fases — reproduzir → causa raiz → fix mínimo → teste de regressão — e o `bug.md` entrando como hipótese a confirmar. Se a issue não for Feature, Story, Task nem Bug (ex.: Spike, Epic), o comando recusa. Feature **sem Stories** → rode `/spec-wave decompose` primeiro. **Ciclo de dependências** → corrija as linhas `Depende de:` (veja `spec-wave order`).
|
|
654
668
|
7. Ao final (Tasks em **🎉 Done**, Story em **👀 Code Review**; a Feature só vai para Code Review quando a última Story concluir — no modo Feature, isso acontece dentro da mesma execução): confirme o resultado com o usuário e oriente a revisão dos PRs.
|
|
655
669
|
|
|
656
670
|
---
|
|
@@ -678,6 +692,54 @@ Crie um documento RFC seguindo a estrutura do RFC-001.
|
|
|
678
692
|
|
|
679
693
|
---
|
|
680
694
|
|
|
695
|
+
### `/spec-wave bug <número-da-issue>`
|
|
696
|
+
|
|
697
|
+
Gera o **`bug.md`** de um defeito: `docs/bugs/<slug>/bug.md`, com reprodução, causa raiz, escopo do fix e teste de regressão.
|
|
698
|
+
|
|
699
|
+
> **Nunca escreva o `bug.md` à mão.** Aplique a label e deixe o Action gerar — é isso que garante o arquivo commitado e referenciado na issue.
|
|
700
|
+
|
|
701
|
+
**Por que não spec/plan:** um Bug não gera especificação funcional nem plano técnico. Esses documentos pedem critérios de aceite, requisitos não-funcionais e plano de rollback — peso desproporcional para um defeito. O `bug.md` tem seis seções e uma finalidade: permitir que outra pessoa (ou o dev-agent) reproduza, entenda e corrija, com prova de que corrigiu.
|
|
702
|
+
|
|
703
|
+
**Passos:**
|
|
704
|
+
|
|
705
|
+
1. Confirme que a issue é do tipo **Bug** (para outros tipos o Action pula, remove a label e comenta).
|
|
706
|
+
2. `gh issue edit <n> --add-label "spec-wave:bug"`
|
|
707
|
+
3. Avise: o Action `generate-bug.yml` gera e commita o arquivo.
|
|
708
|
+
4. Ofereça revisar **duas seções**: **Causa Raiz** e **Teste de Regressão**. São elas que decidem se a correção ataca o defeito ou o sintoma.
|
|
709
|
+
5. Validar: `spec-wave:ready` → confere as seis seções e aplica `spec-wave:bug-approved`.
|
|
710
|
+
|
|
711
|
+
**Seções obrigatórias** (o validador as compara byte a byte — não renomeie ao editar):
|
|
712
|
+
`Reprodução` · `Esperado e Obtido` · `Impacto e Severidade` · `Causa Raiz` · `Escopo do Fix` · `Teste de Regressão`
|
|
713
|
+
|
|
714
|
+
**Quando é obrigatório:** **P0** dispensa (o fix não espera documento); **P1** recomendado; **P2/P3** obrigatório antes de o bug entrar na fila técnica (✅ Ready).
|
|
715
|
+
|
|
716
|
+
**Se a crítica reprovar** (`spec-wave:critique-failed`), os três alvos mais comuns são: a causa raiz não explica todos os sintomas relatados; o escopo do fix é maior que a causa (refatoração pegando carona); o teste de regressão passaria mesmo sem o fix.
|
|
717
|
+
|
|
718
|
+
**Relato insuficiente** produz "Causa raiz não determinada" com hipóteses — isso é o comportamento correto, não falha. Leve as perguntas a quem reportou, acrescente as respostas **como comentário na issue** e reaplique `spec-wave:bug`: os comentários entram no próximo payload.
|
|
719
|
+
|
|
720
|
+
---
|
|
721
|
+
|
|
722
|
+
### `/spec-wave triage <accept|reject|duplicate> <número>`
|
|
723
|
+
|
|
724
|
+
Desfecho da triagem de um Bug (RFC-004 §4.1) — o mesmo que a tela de Bugs do PM oferece, pelo terminal.
|
|
725
|
+
|
|
726
|
+
```bash
|
|
727
|
+
npx @spec-wave/cli@latest triage accept 42
|
|
728
|
+
npx @spec-wave/cli@latest triage accept 42 --severity P1 # reclassifica ao aceitar
|
|
729
|
+
npx @spec-wave/cli@latest triage reject 42 --reason "comportamento esperado"
|
|
730
|
+
npx @spec-wave/cli@latest triage duplicate 42 --of 17
|
|
731
|
+
```
|
|
732
|
+
|
|
733
|
+
- **accept** → ✅ Ready, com a label `spec-wave:triaged`.
|
|
734
|
+
- **reject** e **duplicate** → **fecham** a issue e **não mexem na Etapa**: ela nunca retrocede, e um bug rejeitado não avançou para lugar nenhum. Quem o tira das filas é o estado `closed`.
|
|
735
|
+
- `duplicate` comenta **nas duas** issues — sem isso, quem acompanha a original não fica sabendo que há outro relato.
|
|
736
|
+
|
|
737
|
+
**Portão de aceite:** **P2/P3** exigem o `bug.md` validado (`spec-wave:bug-approved`) antes da fila. **P0/P1** dispensam — esperar o documento custa mais que investigar durante a correção. E `spec-wave:critique-failed` ou `spec-wave:needs-human` bloqueiam **qualquer** severidade: aceitar um bug cujo documento foi reprovado é justamente o que o portão existe para evitar.
|
|
738
|
+
|
|
739
|
+
Para criar um Bug: `npx @spec-wave/cli@latest bug --title "..." [--parent <n>] [--priority P2]`. Ele nasce em **🐞 Triagem** — ou direto em **✅ Ready** se for **P0**.
|
|
740
|
+
|
|
741
|
+
---
|
|
742
|
+
|
|
681
743
|
### `/spec-wave fix-pr <número-do-pr>`
|
|
682
744
|
|
|
683
745
|
Audita um Pull Request e corrige automaticamente os problemas encontrados — segurança, arquitetura, infraestrutura e qualidade de código. Cada fix vira um commit separado no branch do PR. Cada review comment recebe uma resposta com o hash do commit.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: Generate Bug
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
issues:
|
|
5
|
+
types: [labeled]
|
|
6
|
+
|
|
7
|
+
concurrency:
|
|
8
|
+
group: spec-wave-generate-bug-${{ github.event.issue.number }}
|
|
9
|
+
cancel-in-progress: false
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
generate-bug:
|
|
13
|
+
if: >
|
|
14
|
+
github.event.label.name == 'spec-wave:bug' &&
|
|
15
|
+
contains(github.event.issue.title, '[BUG]')
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
permissions:
|
|
18
|
+
issues: write
|
|
19
|
+
contents: write
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
with:
|
|
24
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
25
|
+
|
|
26
|
+
- uses: actions/setup-node@v4
|
|
27
|
+
with:
|
|
28
|
+
node-version: '24'
|
|
29
|
+
|
|
30
|
+
- name: Generate bug.md
|
|
31
|
+
run: npx @spec-wave/cli@{{CLI_VERSION}} generate-bug --issue-number ${{ github.event.issue.number }}
|
|
32
|
+
env:
|
|
33
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
34
|
+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
35
|
+
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
|
|
36
|
+
GITHUB_REPOSITORY: ${{ github.repository }}
|
|
@@ -12,7 +12,8 @@ jobs:
|
|
|
12
12
|
validate:
|
|
13
13
|
if: >
|
|
14
14
|
github.event.label.name == 'spec-wave:ready' &&
|
|
15
|
-
contains(github.event.issue.title, '[FEATURE]')
|
|
15
|
+
(contains(github.event.issue.title, '[FEATURE]') ||
|
|
16
|
+
contains(github.event.issue.title, '[BUG]'))
|
|
16
17
|
runs-on: ubuntu-latest
|
|
17
18
|
permissions:
|
|
18
19
|
issues: write
|
package/src/ui/wizard.mjs
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import * as p from '@clack/prompts';
|
|
2
2
|
import { execSync } from 'node:child_process';
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
AI_PROVIDERS, getProvider, DEFAULT_PROVIDER, WORKFLOW_FILES, ISSUE_TEMPLATE_FILES,
|
|
5
|
+
STATUS_OPTIONS, CUSTOM_FIELDS, ALL_LABELS,
|
|
6
|
+
} from '../config.mjs';
|
|
4
7
|
|
|
5
8
|
export async function runWizard() {
|
|
6
9
|
p.intro('spec-wave — configuração do fluxo spec-driven');
|
|
@@ -62,7 +65,7 @@ export async function runWizard() {
|
|
|
62
65
|
|
|
63
66
|
confirm: ({ results }) =>
|
|
64
67
|
p.confirm({
|
|
65
|
-
message: `Configurar ${results.repo} com GitHub Project "${results.projectTitle}"?\n -
|
|
68
|
+
message: `Configurar ${results.repo} com GitHub Project "${results.projectTitle}"?\n - ${STATUS_OPTIONS.length} colunas kanban\n - ${CUSTOM_FIELDS.length} campos customizados\n - ${ALL_LABELS.length} labels\n - ${WORKFLOW_FILES.length} workflows + ${ISSUE_TEMPLATE_FILES.length} issue templates`,
|
|
66
69
|
initialValue: true,
|
|
67
70
|
}),
|
|
68
71
|
},
|