@spec-wave/cli 0.5.8 → 0.5.10
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/bin/spec-wave.mjs +14 -0
- package/package.json +1 -1
- package/src/api/github-graphql.mjs +25 -0
- package/src/api/github-rest.mjs +25 -0
- package/src/commands/code-review.mjs +75 -15
- package/src/commands/implement.mjs +68 -27
- package/src/commands/info.mjs +3 -1
- package/src/commands/init.mjs +27 -21
- package/src/commands/install-skill.mjs +53 -23
- package/src/commands/qa.mjs +19 -6
- package/src/commands/update.mjs +300 -0
- package/src/config.mjs +20 -0
- package/src/templates/skill/SKILL.md +72 -39
|
@@ -1,10 +1,10 @@
|
|
|
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|issue|feature|spec|plan|ready|decompose|implement|uninstall|rfc|fix-pr] [target]"
|
|
4
|
+
argument-hint: "[info|setup|update|issue|feature|spec|plan|ready|decompose|implement|uninstall|rfc|fix-pr] [target]"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools:
|
|
7
|
-
- Bash(npx spec-wave *)
|
|
7
|
+
- Bash(npx @spec-wave/cli *)
|
|
8
8
|
- Bash(gh issue *)
|
|
9
9
|
- Bash(gh project *)
|
|
10
10
|
- Bash(gh repo view *)
|
|
@@ -27,16 +27,18 @@ Este skill guia o usuário pelo fluxo spec-driven definido no RFC-001.
|
|
|
27
27
|
|
|
28
28
|
> **Antes de responder a qualquer sub-comando**, leia o arquivo `rfc/rfc-integrate-spec-kit-into-kanban.md` se ele existir no diretório atual, para embasar suas respostas no processo real da equipe.
|
|
29
29
|
|
|
30
|
+
> **Verifique se esta skill está atualizada:** logo no topo deste arquivo há um banner `spec-wave skill vX.Y.Z` (inserido na instalação). Compare com `npx @spec-wave/cli --version`. Se a CLI for **mais recente** (ou o banner estiver ausente = instalada por versão antiga), esta skill está desatualizada — avise o usuário e sugira `npx @spec-wave/cli update` (detecta e atualiza só o que mudou: skill, `.spec-wave.json` e workflows/labels do repo) ou, para atualizar só a skill, `npx @spec-wave/cli install-skill --force`. A skill é uma cópia estática e **não** acompanha o `npx` sozinha.
|
|
31
|
+
|
|
30
32
|
---
|
|
31
33
|
|
|
32
34
|
## Detecção de configuração (faça isto primeiro, sempre)
|
|
33
35
|
|
|
34
|
-
Antes de qualquer sub-comando, leia o arquivo `.spec-wave.json` na raiz do repositório atual (use o tool Read). Esse arquivo é gravado pelo `npx spec-wave init` e é a fonte de estado persistente entre sessões.
|
|
36
|
+
Antes de qualquer sub-comando, leia o arquivo `.spec-wave.json` na raiz do repositório atual (use o tool Read). Esse arquivo é gravado pelo `npx @spec-wave/cli init` e é a fonte de estado persistente entre sessões.
|
|
35
37
|
|
|
36
38
|
- **Se existir**, o spec-wave já foi configurado. Use seus campos para contextualizar as respostas, sem perguntar de novo:
|
|
37
39
|
- `owner`/`repo` → repositório alvo dos comandos `gh`
|
|
38
40
|
- `project.url` / `project.title` → o GitHub Project a referenciar
|
|
39
|
-
- `version` → versão da CLI usada no `init` (compare com `npx spec-wave --version`; se divergir, sugira `npx spec-wave refresh --config` para atualizar o arquivo, ou re-rodar o `init` para atualizar workflows/labels)
|
|
41
|
+
- `version` → versão da CLI usada no `init` (compare com `npx @spec-wave/cli --version`; se divergir, sugira `npx @spec-wave/cli refresh --config` para atualizar o arquivo, ou re-rodar o `init` para atualizar workflows/labels)
|
|
40
42
|
- `initializedAt` → quando foi configurado
|
|
41
43
|
Não rode `/spec-wave setup` de novo a menos que o usuário peça explicitamente.
|
|
42
44
|
- **Se não existir**, o repositório provavelmente ainda não foi configurado. Sugira começar por `/spec-wave setup`.
|
|
@@ -80,15 +82,15 @@ Labels de gatilho:
|
|
|
80
82
|
- `spec-wave:ready` → dispara `validate.yml` → valida ambos os arquivos
|
|
81
83
|
- `spec-wave:decompose` → dispara `decompose.yml` → gera Stories e Tasks
|
|
82
84
|
|
|
83
|
-
A etapa **🚧 Desenvolvimento** é coberta pelo comando **local** `spec-wave implement <número>` (não é uma label/Action): lê uma Story ou Task e aciona o spec-kit para implementar. Veja `/spec-wave implement`.
|
|
85
|
+
A etapa **🚧 Desenvolvimento** é coberta pelo comando **local** `npx @spec-wave/cli implement <número>` (não é uma label/Action): lê uma Story ou Task e aciona o spec-kit para implementar. Veja `/spec-wave implement`.
|
|
84
86
|
|
|
85
87
|
---
|
|
86
88
|
|
|
87
89
|
## Referência da CLI (conheça os parâmetros ANTES de executar)
|
|
88
90
|
|
|
89
|
-
Esta skill é um **wrapper** da CLI `spec-wave
|
|
91
|
+
Esta skill é um **wrapper** da CLI `@spec-wave/cli`, sempre invocada como `npx @spec-wave/cli <comando>`. Regra de ouro: **nunca rode um comando sem os parâmetros que ele aceita** esperando que ele pergunte — colete os valores com o usuário e passe via flags. Em especial, **`init` sem `--repo` abre um wizard interativo (@clack/prompts) que a skill NÃO consegue dirigir** — sempre passe `--repo`.
|
|
90
92
|
|
|
91
|
-
###
|
|
93
|
+
### `@spec-wave/cli init` — configura o repositório
|
|
92
94
|
| Flag | Tipo | Descrição |
|
|
93
95
|
|------|------|-----------|
|
|
94
96
|
| `--repo <owner/repo>` | string | Repositório alvo. **Passe SEMPRE** para evitar o wizard interativo. |
|
|
@@ -98,25 +100,25 @@ Esta skill é um **wrapper** da CLI `spec-wave`. Regra de ouro: **nunca rode um
|
|
|
98
100
|
| `--skip-files` | flag | Pula a criação dos workflows + issue templates. |
|
|
99
101
|
| `--dry-run` | flag | Simula a configuração sem alterar nada. |
|
|
100
102
|
|
|
101
|
-
###
|
|
103
|
+
### `@spec-wave/cli issue` — cria um work item tipado, opcionalmente como sub-issue, e adiciona ao board
|
|
102
104
|
| Flag | Tipo | Descrição |
|
|
103
105
|
|------|------|-----------|
|
|
104
106
|
| `--title <title>` | string (obrigatório) | Título, **sem** o prefixo de tipo (a CLI adiciona, ex.: `[STORY]`). |
|
|
105
107
|
| `--type <type>` | string | `initiative`, `epic`, `feature`, `story`, `task`, `bug`, `spike` ou `rfc`. Default: `feature`. |
|
|
106
108
|
| `--parent <n>` | string | Número da issue pai — cria como **sub-issue** dela (relação nativa do GitHub). |
|
|
107
109
|
| `--body <text>` | string | Descrição. |
|
|
108
|
-
| `--priority <p>` | string | `P0`, `P1`, `P2` ou `P3`. |
|
|
110
|
+
| `--priority <p>` | string | **Opcional.** `P0`, `P1`, `P2` ou `P3`. Omita se o usuário não pediu — a prioridade fica `null` (sem prioridade). Nunca atribua por conta própria. |
|
|
109
111
|
| `--area <area>` | string | `Frontend`, `Backend`, `Mobile`, `Infra`, `DevOps` ou `Data`. |
|
|
110
112
|
|
|
111
|
-
> Faz tudo: cria a issue (label de tipo
|
|
113
|
+
> Faz tudo: cria a issue (label de tipo — e de prioridade **apenas se `--priority` for informado**), vincula ao parent como sub-issue, adiciona ao Project e define os campos **Etapa = 📥 Backlog**, **Work Item Type**, **Area** e, **só se informada, Priority**. Grava `Parent: #N` no corpo. Lê o Project do `.spec-wave.json`. **Não use `gh issue create` direto** — ele não adiciona ao board nem vincula o parent.
|
|
112
114
|
|
|
113
|
-
###
|
|
115
|
+
### `@spec-wave/cli initiative` — atalho de `issue --type initiative`
|
|
114
116
|
Cria o nó raiz da hierarquia (agrupa Epics). Mesmas flags do `issue` exceto `--type` (fixo em `initiative`) e `--parent` (Initiative é raiz, não tem pai).
|
|
115
117
|
|
|
116
|
-
###
|
|
118
|
+
### `@spec-wave/cli feature` — atalho de `issue --type feature`
|
|
117
119
|
Mesmas flags do `issue` (exceto `--type`, fixo em `feature`). Mantido para o fluxo do RFC-001.
|
|
118
120
|
|
|
119
|
-
###
|
|
121
|
+
### `@spec-wave/cli uninstall` — remove a configuração (mantém o Project)
|
|
120
122
|
| Flag | Tipo | Descrição |
|
|
121
123
|
|------|------|-----------|
|
|
122
124
|
| `--repo <owner/repo>` | string | Repositório (default: lê do `.spec-wave.json`). |
|
|
@@ -128,33 +130,43 @@ Mesmas flags do `issue` (exceto `--type`, fixo em `feature`). Mantido para o flu
|
|
|
128
130
|
|
|
129
131
|
> Remove labels + arquivos `.github` + `.spec-wave.json`. **NUNCA apaga o GitHub Project** (preserva o histórico do board) — o usuário deve excluí-lo manualmente se quiser.
|
|
130
132
|
|
|
131
|
-
###
|
|
133
|
+
### `@spec-wave/cli info` — status de configuração do repo atual
|
|
132
134
|
| Flag | Tipo | Descrição |
|
|
133
135
|
|------|------|-----------|
|
|
134
136
|
| `--json` | flag | Saída JSON (`{"initialized":bool, ...}`) para parsing programático. |
|
|
135
137
|
|
|
136
|
-
###
|
|
138
|
+
### `@spec-wave/cli refresh` — atualiza o `.spec-wave.json` local
|
|
137
139
|
| Flag | Tipo | Descrição |
|
|
138
140
|
|------|------|-----------|
|
|
139
141
|
| `--config` | flag | Re-consulta o GitHub Project e reescreve o `.spec-wave.json` (IDs do campo Etapa, opções, number, versão da CLI). |
|
|
140
142
|
|
|
141
143
|
> Use quando o `.spec-wave.json` estiver desatualizado: repos inicializados por uma versão antiga (sem `etapaFieldId`/`stageOptions`), Project renomeado, ou versão da CLI divergente. Escreve no arquivo **local** — faça commit depois.
|
|
142
144
|
|
|
143
|
-
###
|
|
145
|
+
### `@spec-wave/cli update` — atualiza tudo que ficou para trás (só o que mudou)
|
|
146
|
+
| Flag | Tipo | Descrição |
|
|
147
|
+
|------|------|-----------|
|
|
148
|
+
| `--global` | flag | Verifica a skill no escopo do usuário (padrão: projeto). |
|
|
149
|
+
| `--skip-skill` / `--skip-config` / `--skip-repo` | flag | Pula a categoria correspondente. |
|
|
150
|
+
| `--dry-run` | flag | Mostra o que seria atualizado sem alterar nada. |
|
|
151
|
+
| `--yes` | flag | Aplica sem pedir confirmação. |
|
|
152
|
+
|
|
153
|
+
> 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.
|
|
154
|
+
|
|
155
|
+
### `@spec-wave/cli generate-plan` · `generate-spec` · `validate` · `decompose`
|
|
144
156
|
| Flag | Tipo | Descrição |
|
|
145
157
|
|------|------|-----------|
|
|
146
158
|
| `--issue-number <n>` | string (obrigatório) | Número da issue no GitHub. |
|
|
147
159
|
|
|
148
160
|
> ⚠️ Esses quatro comandos são executados pelos **GitHub Actions** (disparados por labels), **não** pela skill diretamente. Veja a *Regra fundamental*: para gerar plan/spec/decompor, adicione a **label** correspondente — não rode o comando à mão (a não ser para debug local).
|
|
149
161
|
|
|
150
|
-
###
|
|
162
|
+
### `@spec-wave/cli implement` — aciona o spec-kit para uma Story ou Task (comando LOCAL)
|
|
151
163
|
| Flag/Arg | Tipo | Descrição |
|
|
152
164
|
|----------|------|-----------|
|
|
153
165
|
| `<issue>` | string (obrigatório) | Número da issue (Story ou Task), ex.: `12` ou `#12`. Argumento posicional. |
|
|
154
166
|
| `--feature-dir <path>` | string | Caminho `docs/features/<slug>` para anexar `spec.md`/`plan.md` como contexto (sobrescreve a resolução automática). |
|
|
155
167
|
| `--dry-run` | flag | Monta o contexto e imprime o comando do spec-kit **sem executar**. |
|
|
156
168
|
|
|
157
|
-
> Diferente dos quatro acima, `implement` roda **localmente** (lê `.spec-wave.json`, como `issue`), não por Action. Detecta o tipo da issue: **Story** → coleta todas as Tasks (sub-issues) e aciona o spec-kit uma única vez; **Task** → só aquela task. Monta o contexto em `.spec-wave/implement-<n>.md` e chama o comando configurado em `specKit.command` (no `.spec-wave.json`) ou na env `SPEC_WAVE_IMPLEMENT_CMD`. Placeholders disponíveis no template: `{tasksFile} {specFile} {planFile} {issue} {type} {title}`. Se nada estiver configurado, ele apenas monta o contexto e mostra como configurar (não executa). O contexto
|
|
169
|
+
> Diferente dos quatro acima, `implement` roda **localmente** (lê `.spec-wave.json`, como `issue`), não por Action. Detecta o tipo da issue: **Story** → coleta todas as Tasks (sub-issues) e aciona o spec-kit uma única vez; **Task** → só aquela task. Monta o contexto em `.spec-wave/implement-<n>.md` e chama o comando configurado em `specKit.command` (no `.spec-wave.json`) ou na env `SPEC_WAVE_IMPLEMENT_CMD`. Placeholders disponíveis no template: `{tasksFile} {specFile} {planFile} {issue} {type} {title}`. Se nada estiver configurado, ele apenas monta o contexto e mostra como configurar (não executa). O contexto inclui instruções para o agente implementar as Tasks **sequencialmente, uma por vez**, usando o campo **Status** (Todo → In Progress → Done) para o progresso *dentro* da Etapa 🚧 Desenvolvimento — sem trocar a Etapa das tasks (nunca duas com Status "In Progress" ao mesmo tempo). **Ao concluir toda a Story**: fazer o commit, abrir o PR e **avançar a Etapa** da **Feature, Story e todas as Tasks juntas** para **👀 Code Review**, reiniciando o **Status** de cada uma para **Todo**. Etapa só avança (nunca volta); Status mede o progresso dentro da etapa.
|
|
158
170
|
|
|
159
171
|
---
|
|
160
172
|
|
|
@@ -165,7 +177,7 @@ Mesmas flags do `issue` (exceto `--type`, fixo em `feature`). Mantido para o flu
|
|
|
165
177
|
Mostra se o repositório atual já foi configurado com o spec-wave.
|
|
166
178
|
|
|
167
179
|
**Passos:**
|
|
168
|
-
1. Execute: `npx spec-wave info`
|
|
180
|
+
1. Execute: `npx @spec-wave/cli info`
|
|
169
181
|
2. **Se o repositório estiver inicializado**, o comando mostra os dados do `.spec-wave.json` (owner/repo, project, versão da CLI, data). Apresente essas informações ao usuário.
|
|
170
182
|
3. **Se NÃO estiver inicializado**, pergunte ao usuário: "Este repositório ainda não foi configurado com o spec-wave. Quer rodar o `init` agora?"
|
|
171
183
|
- Se sim → siga o fluxo de `/spec-wave setup`.
|
|
@@ -173,19 +185,39 @@ Mostra se o repositório atual já foi configurado com o spec-wave.
|
|
|
173
185
|
|
|
174
186
|
---
|
|
175
187
|
|
|
188
|
+
### `/spec-wave update`
|
|
189
|
+
|
|
190
|
+
Traz tudo para a versão atual da CLI, atualizando **só o que mudou**: a skill instalada, o `.spec-wave.json` local e os workflows/labels do repo.
|
|
191
|
+
|
|
192
|
+
**Passos:**
|
|
193
|
+
1. **Sempre comece com `--dry-run`** para inspecionar o que está desatualizado sem alterar nada:
|
|
194
|
+
```bash
|
|
195
|
+
npx @spec-wave/cli update --dry-run
|
|
196
|
+
```
|
|
197
|
+
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.
|
|
198
|
+
3. Se o usuário aprovar, aplique:
|
|
199
|
+
```bash
|
|
200
|
+
npx @spec-wave/cli update --yes
|
|
201
|
+
```
|
|
202
|
+
- Escopos podem ser limitados com `--skip-skill`, `--skip-config`, `--skip-repo`.
|
|
203
|
+
- Atualizações de **arquivos do repo** são commitadas no remoto; o **`.spec-wave.json`** é local (lembre o usuário de commitá-lo).
|
|
204
|
+
4. Se a skill foi atualizada, oriente recarregar/reiniciar o agente para pegar a nova versão.
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
176
208
|
### `/spec-wave setup`
|
|
177
209
|
|
|
178
|
-
Configura o spec-wave no repositório. Você dirige o `init` com flags — **nunca rode `npx spec-wave init` sem `--repo`** (abre o wizard interativo que você não controla).
|
|
210
|
+
Configura o spec-wave no repositório. Você dirige o `init` com flags — **nunca rode `npx @spec-wave/cli init` sem `--repo`** (abre o wizard interativo que você não controla).
|
|
179
211
|
|
|
180
212
|
**Passos:**
|
|
181
|
-
1. **Já configurado?** Leia `.spec-wave.json` (ou rode `npx spec-wave info`). Se existir, avise (mostre `project.url` e `version`) e confirme com o usuário antes de reconfigurar.
|
|
213
|
+
1. **Já configurado?** Leia `.spec-wave.json` (ou rode `npx @spec-wave/cli info`). Se existir, avise (mostre `project.url` e `version`) e confirme com o usuário antes de reconfigurar.
|
|
182
214
|
2. **Descubra o repositório alvo** (parâmetro `--repo`): rode `gh repo view --json nameWithOwner -q .nameWithOwner` para obter `owner/repo` do repo atual. Confirme com o usuário; se não houver remote, pergunte o `owner/repo`.
|
|
183
215
|
3. **Pergunte o título do Project** (parâmetro `--project-title`). Ofereça o default `<repo> — Spec Wave` e aceite-o se o usuário não tiver preferência.
|
|
184
216
|
4. **Cheque o auth:** `gh auth status`. Se faltarem os escopos `project,repo,workflow`, oriente o usuário a rodar ele mesmo `gh auth refresh --scopes project,repo,workflow` (comando interativo — o usuário executa, não você).
|
|
185
|
-
5. **(Opcional) Pré-visualize** antes de aplicar: `npx spec-wave init --repo <owner/repo> --dry-run`.
|
|
217
|
+
5. **(Opcional) Pré-visualize** antes de aplicar: `npx @spec-wave/cli init --repo <owner/repo> --dry-run`.
|
|
186
218
|
6. **Execute com os parâmetros coletados:**
|
|
187
219
|
```bash
|
|
188
|
-
npx spec-wave init --repo <owner/repo> --project-title "<título>"
|
|
220
|
+
npx @spec-wave/cli init --repo <owner/repo> --project-title "<título>"
|
|
189
221
|
```
|
|
190
222
|
Use `--skip-project` / `--skip-labels` / `--skip-files` **apenas** para re-rodar uma fase específica que falhou antes.
|
|
191
223
|
7. O `init` cria o Project, as labels, os workflows, um **scaffold de `.github/config/tech_context.yml`** (só se ainda não existir) e grava `.spec-wave.json`. Oriente o usuário a fazer `git pull` para trazer os arquivos ao checkout local.
|
|
@@ -201,19 +233,19 @@ Crie um work item tipado (Initiative/Epic/Feature/Story/Task/...) já adicionado
|
|
|
201
233
|
**Hierarquia típica:** Initiative → Epic → Feature → Story → Task. A **Initiative** é o nó raiz e agrupa Epics. Use `--parent <n>` para criar como sub-issue do nível acima (ex.: um Epic filho de uma Initiative, ou uma Story filha de uma Feature). O GitHub mostra o parent na issue filha e vice-versa; a CLI ainda grava `Parent: #N` no corpo.
|
|
202
234
|
|
|
203
235
|
**Passos:**
|
|
204
|
-
1. Pergunte ao usuário: tipo (initiative/epic/feature/story/task/...), título (sem prefixo), descrição
|
|
205
|
-
2. Execute o comando com os parâmetros coletados:
|
|
236
|
+
1. Pergunte ao usuário: tipo (initiative/epic/feature/story/task/...), título (sem prefixo), descrição e se há uma issue **pai** (número). **Prioridade e área são opcionais**: só as inclua se o usuário pedir explicitamente. **Nunca atribua uma prioridade por conta própria** — se o usuário não informou, **omita `--priority`** e a prioridade fica `null` (sem prioridade) no board.
|
|
237
|
+
2. Execute o comando com os parâmetros coletados (inclua **apenas** as flags que o usuário forneceu):
|
|
206
238
|
```bash
|
|
207
|
-
npx spec-wave issue \
|
|
239
|
+
npx @spec-wave/cli issue \
|
|
208
240
|
--type "<tipo>" \
|
|
209
241
|
--title "<título>" \
|
|
210
242
|
--body "<descrição>" \
|
|
211
|
-
--area "<área>" \
|
|
212
|
-
--priority "<prioridade>" \
|
|
243
|
+
--area "<área>" \ # opcional — omita se o usuário não informou
|
|
244
|
+
--priority "<prioridade>" \ # opcional — só se o usuário pediu; caso contrário OMITA (prioridade fica null)
|
|
213
245
|
--parent "<número-do-pai>" # opcional
|
|
214
246
|
```
|
|
215
|
-
Para Features, pode usar o atalho `npx spec-wave feature --title ...` (equivale a `--type feature`).
|
|
216
|
-
A CLI cria a issue (label de tipo
|
|
247
|
+
Para Features, pode usar o atalho `npx @spec-wave/cli feature --title ...` (equivale a `--type feature`).
|
|
248
|
+
A CLI cria a issue (label de tipo — e de prioridade **apenas se `--priority` for informado**), vincula como sub-issue do parent, adiciona ao Project e define Etapa = 📥 Backlog + Work Item Type + Area (+ Priority só se informada). **Não use `gh issue create`** (não adiciona ao board nem vincula o parent).
|
|
217
249
|
3. Informe o número criado e o vínculo com o pai (se houver).
|
|
218
250
|
4. Para Features: "Quando quiser iniciar, mova para **📋 Spec** e use `/spec-wave spec <número>` para gerar a especificação funcional (o plano técnico vem depois)".
|
|
219
251
|
|
|
@@ -225,8 +257,8 @@ Remove a configuração do spec-wave do repositório (labels, arquivos `.github`
|
|
|
225
257
|
|
|
226
258
|
**Passos:**
|
|
227
259
|
1. Confirme com o usuário que ele quer remover (a ação remove labels e faz commits removendo os workflows).
|
|
228
|
-
2. Mostre antes o que será removido com `npx spec-wave uninstall --dry-run`.
|
|
229
|
-
3. Execute `npx spec-wave uninstall` (a CLI pede confirmação; use `--yes` só se o usuário já confirmou).
|
|
260
|
+
2. Mostre antes o que será removido com `npx @spec-wave/cli uninstall --dry-run`.
|
|
261
|
+
3. Execute `npx @spec-wave/cli uninstall` (a CLI pede confirmação; use `--yes` só se o usuário já confirmou).
|
|
230
262
|
4. Lembre o usuário de excluir o **GitHub Project** manualmente, se desejar — a CLI não o apaga de propósito.
|
|
231
263
|
|
|
232
264
|
---
|
|
@@ -267,7 +299,7 @@ O plano técnico segue o schema do RFC-002 §3.2: **Estratégia Técnica** (com
|
|
|
267
299
|
|
|
268
300
|
### Tech Context (`.github/config/tech_context.yml`)
|
|
269
301
|
|
|
270
|
-
Fonte de verdade estática da stack do sistema (RFC-002 §4). O `generate-plan` lê este arquivo para embasar o plano técnico e usar **APENAS** as tecnologias/serviços nele declarados — sem ele, o plano fica genérico e pode inventar APIs inexistentes. O `npx spec-wave init` gera um **scaffold de exemplo** que **deve ser adaptado** à stack real. Use este fluxo quando o arquivo estiver ausente ou desatualizado.
|
|
302
|
+
Fonte de verdade estática da stack do sistema (RFC-002 §4). O `generate-plan` lê este arquivo para embasar o plano técnico e usar **APENAS** as tecnologias/serviços nele declarados — sem ele, o plano fica genérico e pode inventar APIs inexistentes. O `npx @spec-wave/cli init` gera um **scaffold de exemplo** que **deve ser adaptado** à stack real. Use este fluxo quando o arquivo estiver ausente ou desatualizado.
|
|
271
303
|
|
|
272
304
|
**Como ajudar a criar (quando não existir):**
|
|
273
305
|
|
|
@@ -361,17 +393,18 @@ Aciona o spec-kit para implementar uma **Story** (todas as suas Tasks) ou uma **
|
|
|
361
393
|
1. Confirme que há `.spec-wave.json` no repo (senão, oriente `/spec-wave setup`).
|
|
362
394
|
2. **Sempre comece com `--dry-run`** para inspecionar o que será feito — detecção do tipo, lista de Tasks coletadas (no caso de Story) e o comando do spec-kit que seria executado:
|
|
363
395
|
```bash
|
|
364
|
-
npx spec-wave implement <número> --dry-run
|
|
396
|
+
npx @spec-wave/cli implement <número> --dry-run
|
|
365
397
|
```
|
|
366
|
-
3. Mostre ao usuário o contexto montado em `.spec-wave/implement-<número>.md` e o comando.
|
|
367
|
-
4. Se o
|
|
398
|
+
3. Mostre ao usuário o contexto montado em `.spec-wave/implement-<número>.md` e o comando. Esse arquivo contém as **instruções de execução sequencial**: implemente as Tasks **uma por vez** — mova a task para **🚧 Desenvolvimento** só ao iniciá-la e para **🎉 Done** ao concluí-la, antes de passar para a próxima. **Nunca** coloque várias tasks em "in progress" ao mesmo tempo.
|
|
399
|
+
4. **Se você (agente) for implementar diretamente** (sem `specKit.command`): siga o contexto task por task. Para cada task, use o campo **Status** (In Progress ao começar → Done ao concluir) *dentro* da Etapa 🚧 Desenvolvimento — não troque a Etapa da task. Atualize os campos via `gh`. **Ao concluir toda a Story**: faça o commit, abra o PR e **avance a Etapa** da **Feature, Story e todas as Tasks juntas** para **👀 Code Review**, reiniciando o **Status** de cada uma para **Todo**. Lembre: Etapa só avança (nunca volta); Status é o progresso dentro da etapa.
|
|
400
|
+
5. Se o usuário aprovar e o spec-kit estiver configurado, rode sem `--dry-run`:
|
|
368
401
|
```bash
|
|
369
|
-
npx spec-wave implement <número>
|
|
402
|
+
npx @spec-wave/cli implement <número>
|
|
370
403
|
```
|
|
371
404
|
- 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}`).
|
|
372
405
|
- 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.
|
|
373
|
-
|
|
374
|
-
|
|
406
|
+
6. Se a issue **não** for Story nem Task (ex.: Feature, Bug), o comando recusa — oriente o usuário: Features se decompõem (`/spec-wave decompose`); implemente as Stories/Tasks resultantes.
|
|
407
|
+
7. Ao final (Story implementada, commit feito, PR aberto e Feature + Story + Tasks em **👀 Code Review**): confirme o resultado com o usuário e oriente a revisão do PR.
|
|
375
408
|
|
|
376
409
|
---
|
|
377
410
|
|