wize-dev-kit 0.17.0 → 0.19.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 +11 -1
- package/README.es.md +7 -0
- package/README.md +7 -0
- package/README.pt-BR.md +10 -0
- package/package.json +1 -1
- package/src/core-skills/module.yaml +3 -0
- package/src/core-skills/wize-no-ai-slop/skill.md +83 -0
- package/src/method-skills/1-analysis/wize-agent-tech-writer/agent.yaml +1 -0
- package/src/method-skills/1-analysis/wize-agent-tech-writer/persona.md +1 -0
- package/src/method-skills/2-plan-workflows/wize-agent-ux-designer/agent.yaml +1 -0
- package/src/method-skills/2-plan-workflows/wize-agent-ux-designer/persona.md +4 -1
- package/src/orchestrator-skills/module.yaml +3 -0
- package/src/orchestrator-skills/wize/skill.md +5 -5
- package/src/orchestrator-skills/wize-help/skill.md +6 -5
- package/src/orchestrator-skills/wize-update/skill.md +61 -0
- package/tools/installer/commands/version-check.js +39 -0
- package/tools/installer/version-check.js +21 -1
- package/tools/installer/wize-cli.js +4 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,7 +7,17 @@ Format inspired by [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
7
7
|
> **0.10.0 and earlier are in Brazilian Portuguese** and are kept verbatim as a
|
|
8
8
|
> historical record (not back-translated).
|
|
9
9
|
|
|
10
|
-
## [
|
|
10
|
+
## [0.19.0] — 2026-09-18
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`wize-no-ai-slop`** (core skill) — writing hygiene for end-user-facing prose, adapted from [no-ai-slop](https://github.com/petergyang/no-ai-slop) by Peter Yang (MIT, credited in the READMEs). Two jobs: apply while writing (17 AI-slop patterns to cut — binary contrasts, throat-clearing, faux-insight setups, importance puffery, weasel attribution, fake-profound kickers, formatting slop, etc. — plus banned filler words, voice preservation, portability test) and detect on request (name each pattern with a quoted line; no rewriting, no guessing AI authorship). Wired into Peggy Carter (`wize-agent-tech-writer`) and Mantis (`wize-agent-ux-designer`) agent skills + persona styles; registered in the core module catalog; rendered by all 11 harness adapters.
|
|
15
|
+
|
|
16
|
+
## [0.18.0] — 2026-09-18
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- **`wize-update`** (orchestrator skill) + **`wize-dev-kit version-check`** (CLI) — an agent-facing way to ask "is there a newer kit?" without hitting the network on every invocation. `version-check --json` reads a local 1h cache first, caps any registry call at ~1.5s, and degrades to `{"latest":null}` silently when offline; it honors `WIZE_DISABLE_UPDATE_CHECK=1` like the existing opportunistic hint. `wize-help`/`wize`'s proactive version-skew check (Step 2.5) now calls it instead of a live `npm view` on every invocation, says the hint at most once per conversation, and points to `/wize-update` — which shows the version jump + changelog excerpt, asks for a one-line confirmation, then runs `npx wize-dev-kit@latest update` and relays the result. Intent phrases: "atualizar o kit", "tem atualização", "nova versão do kit".
|
|
11
21
|
|
|
12
22
|
## [0.17.0] — 2026-09-08
|
|
13
23
|
|
package/README.es.md
CHANGED
|
@@ -157,8 +157,13 @@ Transversales:
|
|
|
157
157
|
/wize-check Checklist de avance de la demanda en vuelo: hecho
|
|
158
158
|
(con evidencia), en curso, lo que falta — luego
|
|
159
159
|
retoma el trabajo interrumpido.
|
|
160
|
+
/wize-update Revisa si el kit está desactualizado, muestra el
|
|
161
|
+
changelog, confirma y aplica la actualización.
|
|
160
162
|
/wize-grill Entrevista-hasta-entendimiento antes de cualquier
|
|
161
163
|
paso de autoría.
|
|
164
|
+
/wize-no-ai-slop Higiene de escrita para texto de usuario final:
|
|
165
|
+
elimina patrones de "AI slop" y palabras de relleno
|
|
166
|
+
preservando la voz del autor. También detecta slop.
|
|
162
167
|
/wize-quick-dev Shuri toma un arreglo pequeño sin el ciclo completo.
|
|
163
168
|
/wize-pre-pr-check Corre lint/format/build/tests unitarios localmente
|
|
164
169
|
antes de abrir un PR — falla rápido, cero costo de runner.
|
|
@@ -240,6 +245,7 @@ npx wize-dev-kit document-project [quick|initial_scan|full_rescan|deep_dive] [--
|
|
|
240
245
|
npx wize-dev-kit uninstall # elimina .wize/ (tu código queda intacto)
|
|
241
246
|
npx wize-dev-kit help # referencia de comandos
|
|
242
247
|
npx wize-dev-kit version # imprime la versión instalada del kit
|
|
248
|
+
npx wize-dev-kit version-check [--json] # instalada vs. más reciente (con caché; scriptable; nunca bloquea)
|
|
243
249
|
```
|
|
244
250
|
|
|
245
251
|
---
|
|
@@ -265,6 +271,7 @@ npx wize-dev-kit version # imprime la versión instalada del kit
|
|
|
265
271
|
|
|
266
272
|
- [BMAD Method](https://github.com/bmad-code-org/BMAD-METHOD) por Brian (BMad) Madison — ciclo ágil de IA, personas de agentes, patrón de instalador, sistema de módulos.
|
|
267
273
|
- [Whiteport Design Studio expansion](https://github.com/bmad-code-org/bmad-method-wds-expansion) — metodología UX-first, panteón nórdico (Saga, Freya), estructura de fases.
|
|
274
|
+
- [No AI Slop](https://github.com/petergyang/no-ai-slop) por Peter Yang — higiene de escrita que elimina patrones de AI slop sin aplanar la voz del autor; la inspiración para `/wize-no-ai-slop`.
|
|
268
275
|
|
|
269
276
|
Wize Development Kit es una **adaptación independiente** — no afiliada ni respaldada por los autores de BMAD o WDS. Los nombres de personas Marvel se usan como referencias creativas bajo uso nominativo justo.
|
|
270
277
|
|
package/README.md
CHANGED
|
@@ -155,10 +155,15 @@ Cross-cutting:
|
|
|
155
155
|
/wize-check Progress checklist for the demand in flight:
|
|
156
156
|
done (with evidence), in progress, what's left —
|
|
157
157
|
then resumes the interrupted work.
|
|
158
|
+
/wize-update Checks kit version skew, shows the changelog
|
|
159
|
+
jump, confirms, then applies the update.
|
|
158
160
|
/wize-grill Interview-to-understanding before any authoring step.
|
|
159
161
|
/wize-eli5 Explain anything to anyone — vocabulary, analogies,
|
|
160
162
|
tone, depth and framing calibrated to the audience
|
|
161
163
|
(age, role, relationship).
|
|
164
|
+
/wize-no-ai-slop Writing hygiene for end-user-facing prose: removes
|
|
165
|
+
AI-slop patterns and filler while preserving the
|
|
166
|
+
writer's voice. Detects slop on request.
|
|
162
167
|
/wize-quick-dev Shuri takes a small fix without the full ride.
|
|
163
168
|
/wize-pre-pr-check Run lint/format/build/unit tests locally before
|
|
164
169
|
opening a PR — fail fast, zero CI runner cost.
|
|
@@ -238,6 +243,7 @@ npx wize-dev-kit document-project [quick|initial_scan|full_rescan|deep_dive] [--
|
|
|
238
243
|
npx wize-dev-kit uninstall # remove .wize/ (your code is left untouched)
|
|
239
244
|
npx wize-dev-kit help # command reference
|
|
240
245
|
npx wize-dev-kit version # print the installed kit version
|
|
246
|
+
npx wize-dev-kit version-check [--json] # installed vs latest (cached; scriptable; never blocks)
|
|
241
247
|
```
|
|
242
248
|
|
|
243
249
|
---
|
|
@@ -264,6 +270,7 @@ npx wize-dev-kit version # print the installed kit version
|
|
|
264
270
|
- [BMAD Method](https://github.com/bmad-code-org/BMAD-METHOD) by Brian (BMad) Madison — agile AI lifecycle, agent personas, installer pattern, module system.
|
|
265
271
|
- [Whiteport Design Studio expansion](https://github.com/bmad-code-org/bmad-method-wds-expansion) — UX-first methodology, Norse pantheon (Saga, Freya), phase structure.
|
|
266
272
|
- [ELI5](https://github.com/dreambigou/eli5) by Andrew Ou — audience-calibrated explanations; the inspiration for `/wize-eli5`.
|
|
273
|
+
- [No AI Slop](https://github.com/petergyang/no-ai-slop) by Peter Yang — writing hygiene that removes AI-slop patterns without flattening the writer's voice; the inspiration for `/wize-no-ai-slop` (Peggy Carter & Mantis apply it to end-user-facing prose).
|
|
267
274
|
|
|
268
275
|
Wize Development Kit is an **independent adaptation** — not affiliated with or endorsed by BMAD or WDS authors. Marvel persona names are used as creative references under nominative fair use.
|
|
269
276
|
|
package/README.pt-BR.md
CHANGED
|
@@ -156,8 +156,16 @@ Transversais:
|
|
|
156
156
|
/wize-check Checklist de acompanhamento da demanda em voo:
|
|
157
157
|
feito (com evidência), em andamento, o que falta —
|
|
158
158
|
depois retoma o trabalho interrompido.
|
|
159
|
+
/wize-update Verifica se o kit está desatualizado, mostra o
|
|
160
|
+
changelog, confirma e aplica o update.
|
|
159
161
|
/wize-grill Entrevista-até-entendimento antes de qualquer passo
|
|
160
162
|
de autoria.
|
|
163
|
+
/wize-eli5 Explique qualquer coisa a qualquer um — vocabulário,
|
|
164
|
+
analogias, tom, profundidade e framing calibrados
|
|
165
|
+
para o ouvinte (idade, papel, relação).
|
|
166
|
+
/wize-no-ai-slop Higiene de escrita para texto de usuário final:
|
|
167
|
+
remove padrões de "AI slop" e palavras de enchimento
|
|
168
|
+
preservando a voz do autor. Também detecta slop.
|
|
161
169
|
/wize-quick-dev Shuri pega uma correção pequena sem o ciclo completo.
|
|
162
170
|
/wize-pre-pr-check Roda lint/format/build/testes unitários localmente
|
|
163
171
|
antes de abrir um PR — falha cedo, zero custo de runner.
|
|
@@ -238,6 +246,7 @@ npx wize-dev-kit document-project [quick|initial_scan|full_rescan|deep_dive] [--
|
|
|
238
246
|
npx wize-dev-kit uninstall # remove .wize/ (seu código permanece intacto)
|
|
239
247
|
npx wize-dev-kit help # referência de comandos
|
|
240
248
|
npx wize-dev-kit version # imprime a versão instalada do kit
|
|
249
|
+
npx wize-dev-kit version-check [--json] # instalada vs. mais recente (com cache; scriptável; nunca bloqueia)
|
|
241
250
|
```
|
|
242
251
|
|
|
243
252
|
---
|
|
@@ -263,6 +272,7 @@ npx wize-dev-kit version # imprime a versão instalada do kit
|
|
|
263
272
|
|
|
264
273
|
- [BMAD Method](https://github.com/bmad-code-org/BMAD-METHOD) por Brian (BMad) Madison — ciclo ágil de IA, personas de agentes, padrão de instalador, sistema de módulos.
|
|
265
274
|
- [Whiteport Design Studio expansion](https://github.com/bmad-code-org/bmad-method-wds-expansion) — metodologia UX-first, panteão nórdico (Saga, Freya), estrutura de fases.
|
|
275
|
+
- [No AI Slop](https://github.com/petergyang/no-ai-slop) por Peter Yang — higiene de escrita que elimina padrões de AI slop sem achatar a voz do autor; a inspiração para `/wize-no-ai-slop`.
|
|
266
276
|
|
|
267
277
|
O Wize Development Kit é uma **adaptação independente** — não afiliada nem endossada pelos autores do BMAD ou do WDS. Os nomes de personas Marvel são referências criativas sob uso nominativo justo.
|
|
268
278
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "wize-dev-kit",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.19.0",
|
|
5
5
|
"description": "Full-lifecycle AI-assisted development kit with Test Architect and Whiteport Design Studio embedded. Inspired by BMAD Method and WDS.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"ai",
|
|
@@ -19,6 +19,9 @@ skills:
|
|
|
19
19
|
- code: wize-eli5
|
|
20
20
|
name: "ELI5"
|
|
21
21
|
description: "Explain anything to anyone — adapts vocabulary, analogies, tone, depth and framing to the audience (age, role, relationship)."
|
|
22
|
+
- code: wize-no-ai-slop
|
|
23
|
+
name: "No AI Slop"
|
|
24
|
+
description: "Writing hygiene for end-user-facing prose — removes 17 AI-generated patterns and banned words while preserving the writer's voice; also detects slop without rewriting."
|
|
22
25
|
- code: wize-brainstorming
|
|
23
26
|
name: "Brainstorming"
|
|
24
27
|
description: "Divergent-then-convergent ideation; produces idea-pool.md."
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
code: wize-no-ai-slop
|
|
3
|
+
description: "Use quando qualquer agente for escrever ou editar texto para usuário final — READMEs, runbooks, microcopy, release notes, UX copy — para remover padrões de 'AI slop' sem achatar a voz do autor. Também detecta slop em rascunhos sem reescrever."
|
|
4
|
+
name: No AI Slop
|
|
5
|
+
module: core
|
|
6
|
+
status: ready
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# No AI Slop — human writing hygiene
|
|
10
|
+
|
|
11
|
+
**Goal.** End-user-facing prose (READMEs, runbooks, release notes, UX microcopy, docs, announcements) that reads like a sharp human wrote it — not like a model's default register. Remove AI-generated patterns without flattening the writer's personal voice. This is a hygiene pass every Wize agent applies when the reader is outside the team; internal artifacts (PRD, ADR, gate) keep their own conventions.
|
|
12
|
+
|
|
13
|
+
Adapted to the Wize method from [no-ai-slop](https://github.com/petergyang/no-ai-slop) by Peter Yang (MIT) — credited in the README.
|
|
14
|
+
|
|
15
|
+
## Two jobs
|
|
16
|
+
|
|
17
|
+
**Apply while writing (default for Peggy & Mantis).** When drafting or editing end-user text, run the rules below as you write — not as a retrospective cosmetic pass. Produce the text plus, on request, a short **What changed** section.
|
|
18
|
+
|
|
19
|
+
**Detect.** When asked whether a piece "reads like AI", name each pattern found with a quoted line and a short fix. Do not rewrite, do not score, and do not guess whether AI wrote it — named patterns are evidence the reader can check. Offer to edit after.
|
|
20
|
+
|
|
21
|
+
## Voice first
|
|
22
|
+
|
|
23
|
+
- **Preserve the writer's real voice.** Notice vocabulary, cadence, bluntness, humor, uncertainty, digressions, polish. Keep the traits that feel personal. Do not make every paragraph equally tidy.
|
|
24
|
+
- **Minimum effective edit.** Fix patterns, errors, repetition, unclear passages. Leave strong human sentences alone.
|
|
25
|
+
- **Keep the meaning.** Never invent claims, examples, stats, or opinions. If something is unclear, ask.
|
|
26
|
+
- **Preserve useful edge.** Strong opinions, blunt language, honest admissions ("I think", "maybe") stay when they carry real uncertainty or the writer's spoken rhythm.
|
|
27
|
+
|
|
28
|
+
## Principles
|
|
29
|
+
|
|
30
|
+
- **Lead with the point** when the setup adds nothing; keep personal setups that add context, tension, or character.
|
|
31
|
+
- **Front-load only where it helps** — never force every section into the same point-detail-background shape.
|
|
32
|
+
- **Every sentence earns its place.** Cut empty qualifiers and throat-clearing.
|
|
33
|
+
- **Active voice, human subjects.** "The team shipped it Tuesday" beats "the decision emerged". Never let inanimate things do human verbs.
|
|
34
|
+
- **Verbs do the work.** "Made a decision" → "decided". "Has the ability to" → "can". Prefer plain `is`/`has` over fake-strong verbs ("serves as a hub").
|
|
35
|
+
- **Concrete beats abstract.** "Improved efficiency" → "cut deploy time from 40 min to 4". Names, numbers, dates, mechanisms, examples.
|
|
36
|
+
- **Portability test.** A sentence that could move unchanged to another company or product is filler — cut it or replace it with something specific to this subject.
|
|
37
|
+
- **Show, don't label.** Make facts carry the emphasis; delete commentary that tells the reader a point is important, surprising, or obvious.
|
|
38
|
+
- **Protect the specific fact.** Don't smooth a real detail into generic importance.
|
|
39
|
+
- **Untangle without flattening cadence.** Split genuinely hard sentences; keep clear spoken rhythm and fragments that belong to the voice.
|
|
40
|
+
|
|
41
|
+
## Words to cut
|
|
42
|
+
|
|
43
|
+
- **Banned:** delve, foster, leverage, utilize, facilitate, empower, streamline, robust, cutting-edge, paradigm shift, game changer, this is huge, this changes everything, tapestry, realm, beacon, multifaceted, meticulous, intricate, paramount, transformative, elevate, embark, supercharge, harness, ever-evolving.
|
|
44
|
+
- **Often-empty adverbs** (cut unless they carry emphasis or uncertainty): just, literally, honestly, simply, actually, truly, fundamentally, importantly, crucially, inherently, inevitably.
|
|
45
|
+
- **Often-empty phrases** (cut when they delay the point): it's worth noting, at the end of the day, when it comes to, at its core, in today's world, the reality is, in terms of, with regard to, in order to, going forward, let's dive in.
|
|
46
|
+
|
|
47
|
+
## Patterns to cut
|
|
48
|
+
|
|
49
|
+
1. **Binary contrasts** — "It's not X. It's Y." State Y directly.
|
|
50
|
+
2. **Throat-clearing openers** — "Here's the thing", "Let me be clear". State the point.
|
|
51
|
+
3. **Faux-insight setups** — "What nobody tells you", "The part everyone misses". Make the claim stand alone.
|
|
52
|
+
4. **Colon reveals** — "The best part: it learns." Use colons for lists and labels, not fake drama.
|
|
53
|
+
5. **Superficial analysis** — trailing "-ing" clauses that pretend to explain ("…, highlighting the team's commitment"). State the actual consequence.
|
|
54
|
+
6. **Importance puffery** — "marks a pivotal moment", "a testament to". State the fact; let the reader judge.
|
|
55
|
+
7. **Interpretive metadiscourse** — "That last part matters", "As you can see", "The key point is". Delete.
|
|
56
|
+
8. **Weasel attribution** — "experts agree", "studies show". Name the source or cut; ask before inventing one.
|
|
57
|
+
9. **Synonym cycling** — if the clear word is right, repeat it.
|
|
58
|
+
10. **Negative listing** — "Not a X. Not a Y. A Z." → just say Z.
|
|
59
|
+
11. **Dramatic fragments** — "That's it. That's the whole thing." Use complete sentences.
|
|
60
|
+
12. **Robotic rhythm** — vary repeated sentence shapes and paragraph structures only when it helps the point.
|
|
61
|
+
13. **Rhetorical setups** — "What if I told you…", "Think about it:", self-answered "Question? Answer."
|
|
62
|
+
14. **Fake-profound kickers** — delete the cute final line; end on the clearest concrete sentence, takeaway, or next action.
|
|
63
|
+
15. **Summary-recap endings** — "In conclusion", "Ultimately", restating the piece.
|
|
64
|
+
16. **Formatting slop** — emoji in headings, bold sprinkled mid-sentence, bullets where two sentences of prose read better, headers over two-sentence sections.
|
|
65
|
+
17. **Em dashes as a rhythm crutch** — none in short copy; 1–2 in long drafts only when they clearly beat commas or parentheses.
|
|
66
|
+
|
|
67
|
+
## Self-check (eval)
|
|
68
|
+
|
|
69
|
+
Before handing off end-user prose, answer:
|
|
70
|
+
|
|
71
|
+
- Does it preserve the writer's point, voice, and useful edge — without invented claims? (pass/fail)
|
|
72
|
+
- Is cutting proportional, leaving strong human sentences alone? (pass/fail)
|
|
73
|
+
- Does every generic sentence survive the portability test? (pass/fail)
|
|
74
|
+
- Are banned words, filler phrases, and the 17 patterns absent? (pass/fail)
|
|
75
|
+
- Would the writer recognize it as their own voice when read to a sharp colleague? (pass/fail)
|
|
76
|
+
|
|
77
|
+
If any check fails, fix and re-check before returning the draft.
|
|
78
|
+
|
|
79
|
+
## When NOT to use
|
|
80
|
+
|
|
81
|
+
- Internal Wize artifacts (PRD, ADR, story, gate) — they have their own editorial skills (`wize-editorial-review-prose` / `wize-editorial-review-structure`).
|
|
82
|
+
- Spelling/grammar — use a linter.
|
|
83
|
+
- The user wants audience calibration (age, role, depth) → that's `wize-eli5`; combine both when writing for a tuned audience.
|
|
@@ -17,6 +17,7 @@ style:
|
|
|
17
17
|
approach: "structure > prose; audience-first"
|
|
18
18
|
|
|
19
19
|
skills:
|
|
20
|
+
- wize-no-ai-slop # hygiene pass on every end-user-facing draft
|
|
20
21
|
- wize-editorial-review-prose
|
|
21
22
|
- wize-editorial-review-structure
|
|
22
23
|
- wize-document-project # paired with Pepper in brownfield
|
|
@@ -16,6 +16,7 @@ I am **Peggy Carter**. I make the team's writing sound like one team. Structure,
|
|
|
16
16
|
|
|
17
17
|
- I never write "this comprehensive solution." I cut filler.
|
|
18
18
|
- Audience first: who reads this? what do they need? cut everything else.
|
|
19
|
+
- I run the `wize-no-ai-slop` rules on everything end users will read: no AI slop patterns, no banned filler words — but I never flatten the writer's voice. Minimum effective edit; strongest human sentences stay.
|
|
19
20
|
- Structure before sentences: I outline, then I write.
|
|
20
21
|
- I quote sources. I show diagrams. I prefer a table over a paragraph.
|
|
21
22
|
|
|
@@ -12,9 +12,12 @@ I am **Mantis**. I feel what the user is going to feel before they feel it. Then
|
|
|
12
12
|
|
|
13
13
|
## Style
|
|
14
14
|
|
|
15
|
+
- Empathy before pixels: feel the user, then design.
|
|
16
|
+
- I show, I don't tell — in specs and in copy. No "revolutionary", no "game changer"; the interface demonstrates the value.
|
|
17
|
+
- UI copy and scenario prose end users will read goes through the `wize-no-ai-slop` rules: concrete, active voice, writer's voice preserved.
|
|
15
18
|
- Quiet, attentive. I ask what hurts before I propose.
|
|
16
19
|
- I prefer scenarios over personas. People act; they aren't archetypes.
|
|
17
|
-
-
|
|
20
|
+
- ASCII wireframes first, prose second.
|
|
18
21
|
- I cite research. If I don't have research, I say "this is a hypothesis."
|
|
19
22
|
|
|
20
23
|
## What I won't do
|
|
@@ -22,6 +22,9 @@ skills:
|
|
|
22
22
|
- code: wize-check
|
|
23
23
|
name: "Check (Wizer)"
|
|
24
24
|
description: "Progress checklist for the demand in flight: done (with evidence), in progress, left, blocked. Read-only — reports, then resumes the interrupted work."
|
|
25
|
+
- code: wize-update
|
|
26
|
+
name: "Update (Wizer)"
|
|
27
|
+
description: "Checks kit version skew, shows the changelog jump, confirms, then applies `wize-dev-kit update` and reports the result."
|
|
25
28
|
- code: wize-onboarding
|
|
26
29
|
name: "Onboarding"
|
|
27
30
|
description: "Post-install triage: greenfield vs brownfield, profile, objective. Delegates to specialists."
|
|
@@ -99,15 +99,15 @@ See the full intent routing table in `wize-help/skill.md` (Step 2a). The same ta
|
|
|
99
99
|
|
|
100
100
|
## Step 2.5 — version skew (proactive)
|
|
101
101
|
|
|
102
|
-
|
|
102
|
+
If you have Bash, run `npx wize-dev-kit version-check --json` once — it reads a local 1h cache before touching the network, caps any registry call at ~1.5s, and degrades to `{"latest":null}` silently if offline, so this never blocks the response. Compare its `installed` field against `kit_version` (project.toml):
|
|
103
103
|
|
|
104
104
|
| Condition | Suggest |
|
|
105
105
|
|---|---|
|
|
106
|
-
| installed > project.toml |
|
|
107
|
-
|
|
|
108
|
-
|
|
|
106
|
+
| `installed` > `kit_version` (project.toml) | `/wize-update` |
|
|
107
|
+
| `latest` > `installed` | `/wize-update` |
|
|
108
|
+
| everything matches, or `latest` is `null` | nothing |
|
|
109
109
|
|
|
110
|
-
Phrase as one short line, not a banner
|
|
110
|
+
Phrase as one short line, not a banner — and only the **first time in this conversation**. If you already mentioned it earlier in this session, don't repeat it.
|
|
111
111
|
|
|
112
112
|
## Step 3 — respond
|
|
113
113
|
|
|
@@ -201,18 +201,19 @@ Match is case-insensitive, substring-based. Longest match wins. When no intent m
|
|
|
201
201
|
| "create workflow", "criar workflow", "novo workflow" | `wize-create-workflow` |
|
|
202
202
|
| "onboarding", "instalar kit", "primeiro uso" | `wize-onboarding` |
|
|
203
203
|
| "party mode", "multi-agent", "reunir agentes" | `wize-party-mode` |
|
|
204
|
+
| "atualizar o kit", "tem atualização", "nova versão do kit", "update the kit", "wize update" | `wize-update` |
|
|
204
205
|
|
|
205
206
|
## Step 2.5 — version skew (proactive)
|
|
206
207
|
|
|
207
|
-
|
|
208
|
+
If you have Bash, run `npx wize-dev-kit version-check --json` once — it reads a local 1h cache before touching the network, caps any registry call at ~1.5s, and degrades to `{"latest":null}` silently if offline, so this never blocks the response. Compare its `installed` field against `kit_version` (project.toml):
|
|
208
209
|
|
|
209
210
|
| Condition | Suggest |
|
|
210
211
|
|---|---|
|
|
211
|
-
| installed > project.toml |
|
|
212
|
-
|
|
|
213
|
-
|
|
|
212
|
+
| `installed` > `kit_version` (project.toml) | `/wize-update` |
|
|
213
|
+
| `latest` > `installed` | `/wize-update` |
|
|
214
|
+
| everything matches, or `latest` is `null` | nothing |
|
|
214
215
|
|
|
215
|
-
Phrase as one short line, not a banner
|
|
216
|
+
Phrase as one short line, not a banner — and only the **first time in this conversation**. If you already mentioned it earlier in this session, don't repeat it.
|
|
216
217
|
|
|
217
218
|
## Step 3 — respond
|
|
218
219
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
|
|
3
|
+
code: wize-update
|
|
4
|
+
description: "Use quando o usuário pedir para atualizar o Wize Dev Kit, perguntar se há uma versão nova, ou quando o Wizer notar version skew (Step 2.5) e ele confirmar o update."
|
|
5
|
+
name: Update (Wizer)
|
|
6
|
+
module: orchestrator
|
|
7
|
+
owner: wize-orchestrator
|
|
8
|
+
status: ready
|
|
9
|
+
aliases: []
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Wizer · `/wize-update`
|
|
13
|
+
|
|
14
|
+
**Goal.** Bring the installed kit up to date safely: check the real version skew, show what changes before anything runs, get a one-line confirmation, apply it, report the result. Never a surprise — this rewrites files under version control.
|
|
15
|
+
|
|
16
|
+
## Step 1 — check version skew
|
|
17
|
+
|
|
18
|
+
If you have Bash, run:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
npx wize-dev-kit version-check --json
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Cheap by design: it reads a local 1h cache before touching the network, caps any registry call at ~1.5s, and degrades to `{"latest":null}` silently if offline — it never blocks this step.
|
|
25
|
+
|
|
26
|
+
Read `kit_version` from `.wize/config/project.toml` — that is the version **this project's** rendered skills are on. `version-check`'s `installed` field is the kit version currently resolved by `npx` (it can already be newer than what is rendered here, if someone bumped the resolved package without running `update`).
|
|
27
|
+
|
|
28
|
+
| Condition | Meaning |
|
|
29
|
+
|---|---|
|
|
30
|
+
| `latest` (registry) > `installed` | A newer kit exists upstream. |
|
|
31
|
+
| `installed` > project's `kit_version` | This project is behind what npx already resolves. |
|
|
32
|
+
| everything matches, or `latest` is `null` | Nothing to do — say so in one line and stop. Do not continue to Step 2. |
|
|
33
|
+
|
|
34
|
+
## Step 2 — show the jump, then confirm
|
|
35
|
+
|
|
36
|
+
State the version jump plainly (`{from} → {to}`). If you have Bash, `sed -n`/`cat` the relevant excerpt of `CHANGELOG.md` between those versions for a one-line summary of what changed — or trust the excerpt `update` itself prints in Step 3 and summarize that instead.
|
|
37
|
+
|
|
38
|
+
Ask one line: *"Atualizar o kit de {from} para {to}? Isso vai re-renderizar os adapters instalados (claude-code, generic, …) e regravar `kit_version` em `project.toml`."*
|
|
39
|
+
|
|
40
|
+
Never run Step 3 without this confirmation — it rewrites rendered skill/command files that live under version control, and the resulting diff should land as the user's own reviewed commit, not an unreviewed surprise.
|
|
41
|
+
|
|
42
|
+
## Step 3 — run it
|
|
43
|
+
|
|
44
|
+
On confirmation:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
npx wize-dev-kit@latest update
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Relay its output — it already reports per-adapter results and a CHANGELOG excerpt. It is idempotent and additive: it never touches `.wize/config/user.toml`, never removes custom agents/skills under `.wize/custom/`, and only rewrites the `kit_version` line in `project.toml`.
|
|
51
|
+
|
|
52
|
+
## Step 4 — close the loop
|
|
53
|
+
|
|
54
|
+
- Flag any adapter the output reported as `skipped` or `error` — those need a manual look.
|
|
55
|
+
- Repeat, in one line, that the IDE/harness needs a restart to pick up refreshed slash commands.
|
|
56
|
+
- Suggest reviewing the diff (`git status` / `git diff`) before committing — this is a real file change, not a no-op.
|
|
57
|
+
|
|
58
|
+
## When NOT to use
|
|
59
|
+
|
|
60
|
+
- No `.wize/` folder at all → this is a fresh install, not an update. Route to `npx wize-dev-kit install` (see `wize-onboarding`).
|
|
61
|
+
- The user only wants to know whether an update exists, without applying it → Step 1 alone answers that; do not push into Step 2/3 unasked.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// `wize-dev-kit version-check` — explicit, agent-friendly version check.
|
|
2
|
+
//
|
|
3
|
+
// The other CLI commands print an opportunistic hint (version-check.js's
|
|
4
|
+
// printUpdateHintIfAny) that stays silent on a non-TTY stdout so it never
|
|
5
|
+
// spams a pipe. This command is the opposite: it was asked for by name —
|
|
6
|
+
// by a human, or by an AI agent shelling out from a skill instruction where
|
|
7
|
+
// stdout is never a TTY — so it always answers, in `--json` when a caller
|
|
8
|
+
// needs to parse it.
|
|
9
|
+
|
|
10
|
+
'use strict';
|
|
11
|
+
|
|
12
|
+
const { getVersionCheckResult } = require('../version-check.js');
|
|
13
|
+
|
|
14
|
+
async function cmdVersionCheck({ currentVersion, json = false, log = console.log } = {}) {
|
|
15
|
+
const result = await getVersionCheckResult(currentVersion);
|
|
16
|
+
|
|
17
|
+
if (json) {
|
|
18
|
+
log(JSON.stringify(result));
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (result.disabled) {
|
|
23
|
+
log('Update check disabled (WIZE_DISABLE_UPDATE_CHECK=1).');
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
if (!result.latest) {
|
|
27
|
+
log(`wize-dev-kit ${result.installed} (could not reach the registry — offline or timed out).`);
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
if (result.updateAvailable) {
|
|
31
|
+
log(`↑ Update available: wize-dev-kit ${result.installed} → ${result.latest}`);
|
|
32
|
+
log(' Run `npx wize-dev-kit@latest update` in your project to refresh adapters — or `/wize-update` from inside your AI harness.');
|
|
33
|
+
} else {
|
|
34
|
+
log(`wize-dev-kit ${result.installed} is up to date.`);
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
module.exports = { cmdVersionCheck };
|
|
@@ -104,6 +104,25 @@ async function printUpdateHintIfAny(currentVersion, { log = console.log, isTTY =
|
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
// Pure, TTY-agnostic version check. printUpdateHintIfAny above is an
|
|
108
|
+
// opportunistic hint meant for a human's terminal (gated on isTTY so it
|
|
109
|
+
// never spams a pipe or a script); this is the explicit-invocation
|
|
110
|
+
// counterpart behind the `version-check` CLI command, which an AI agent
|
|
111
|
+
// shells out to non-interactively — stdout there is never a TTY, so a
|
|
112
|
+
// TTY-gated check would go silent exactly when it's needed. Always resolves
|
|
113
|
+
// to a plain object, never throws, and shares the same 1h cache.
|
|
114
|
+
async function getVersionCheckResult(currentVersion, { skipCache = false } = {}) {
|
|
115
|
+
if (process.env.WIZE_DISABLE_UPDATE_CHECK === '1') {
|
|
116
|
+
return { installed: currentVersion, latest: null, updateAvailable: false, disabled: true };
|
|
117
|
+
}
|
|
118
|
+
const latest = await getLatestVersion({ skipCache });
|
|
119
|
+
return {
|
|
120
|
+
installed: currentVersion,
|
|
121
|
+
latest: latest || null,
|
|
122
|
+
updateAvailable: latest ? semverGreater(latest, currentVersion) : false
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
|
|
107
126
|
module.exports = {
|
|
108
127
|
CACHE_TTL_MS,
|
|
109
128
|
NETWORK_TIMEOUT_MS,
|
|
@@ -113,5 +132,6 @@ module.exports = {
|
|
|
113
132
|
fetchLatestFromRegistry,
|
|
114
133
|
getLatestVersion,
|
|
115
134
|
semverGreater,
|
|
116
|
-
printUpdateHintIfAny
|
|
135
|
+
printUpdateHintIfAny,
|
|
136
|
+
getVersionCheckResult
|
|
117
137
|
};
|
|
@@ -19,6 +19,7 @@ const prompts = require('prompts');
|
|
|
19
19
|
const { applyGitignore, generateUserToml } = require('./setup-helpers.js');
|
|
20
20
|
const { cmdUpdate, loadProjectConfig } = require('./commands/update.js');
|
|
21
21
|
const { printUpdateHintIfAny } = require('./version-check.js');
|
|
22
|
+
const { cmdVersionCheck } = require('./commands/version-check.js');
|
|
22
23
|
const { cmdSync: cmdSyncReal } = require('./commands/sync.js');
|
|
23
24
|
const { cmdAgentList, cmdAgentCreate, cmdAgentEdit } = require('./commands/agent.js');
|
|
24
25
|
const { cmdDoctor, adapterTargetPath } = require('./commands/doctor.js');
|
|
@@ -73,6 +74,7 @@ Usage:
|
|
|
73
74
|
Commands:
|
|
74
75
|
install Install the kit into the current repo (interactive).
|
|
75
76
|
update Apply upstream diff while preserving customizations.
|
|
77
|
+
version-check [--json] Check installed vs. latest version (scriptable; never blocks).
|
|
76
78
|
uninstall Remove the kit from the current repo (preserves code).
|
|
77
79
|
list List installed agents, skills and workflows.
|
|
78
80
|
sync Regenerate IDE adapters for active targets.
|
|
@@ -891,6 +893,8 @@ async function main() {
|
|
|
891
893
|
switch (cmd) {
|
|
892
894
|
case 'install': return cmdInstall(rest);
|
|
893
895
|
case 'update': return cmdUpdate({ kitRoot: KIT_ROOT, projectRoot: process.cwd() });
|
|
896
|
+
case 'version-check':
|
|
897
|
+
return cmdVersionCheck({ currentVersion: KIT_VERSION, json: rest.includes('--json') });
|
|
894
898
|
case 'uninstall': return cmdUninstall(rest);
|
|
895
899
|
case 'list': return cmdList();
|
|
896
900
|
case 'sync': return cmdSync();
|