wize-dev-kit 0.17.0 → 0.18.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 +5 -1
- package/README.es.md +3 -0
- package/README.md +3 -0
- package/README.pt-BR.md +3 -0
- package/package.json +1 -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,11 @@ 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.18.0] — 2026-09-18
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`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
15
|
|
|
12
16
|
## [0.17.0] — 2026-09-08
|
|
13
17
|
|
package/README.es.md
CHANGED
|
@@ -157,6 +157,8 @@ 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.
|
|
162
164
|
/wize-quick-dev Shuri toma un arreglo pequeño sin el ciclo completo.
|
|
@@ -240,6 +242,7 @@ npx wize-dev-kit document-project [quick|initial_scan|full_rescan|deep_dive] [--
|
|
|
240
242
|
npx wize-dev-kit uninstall # elimina .wize/ (tu código queda intacto)
|
|
241
243
|
npx wize-dev-kit help # referencia de comandos
|
|
242
244
|
npx wize-dev-kit version # imprime la versión instalada del kit
|
|
245
|
+
npx wize-dev-kit version-check [--json] # instalada vs. más reciente (con caché; scriptable; nunca bloquea)
|
|
243
246
|
```
|
|
244
247
|
|
|
245
248
|
---
|
package/README.md
CHANGED
|
@@ -155,6 +155,8 @@ 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
|
|
@@ -238,6 +240,7 @@ npx wize-dev-kit document-project [quick|initial_scan|full_rescan|deep_dive] [--
|
|
|
238
240
|
npx wize-dev-kit uninstall # remove .wize/ (your code is left untouched)
|
|
239
241
|
npx wize-dev-kit help # command reference
|
|
240
242
|
npx wize-dev-kit version # print the installed kit version
|
|
243
|
+
npx wize-dev-kit version-check [--json] # installed vs latest (cached; scriptable; never blocks)
|
|
241
244
|
```
|
|
242
245
|
|
|
243
246
|
---
|
package/README.pt-BR.md
CHANGED
|
@@ -156,6 +156,8 @@ 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.
|
|
161
163
|
/wize-quick-dev Shuri pega uma correção pequena sem o ciclo completo.
|
|
@@ -238,6 +240,7 @@ npx wize-dev-kit document-project [quick|initial_scan|full_rescan|deep_dive] [--
|
|
|
238
240
|
npx wize-dev-kit uninstall # remove .wize/ (seu código permanece intacto)
|
|
239
241
|
npx wize-dev-kit help # referência de comandos
|
|
240
242
|
npx wize-dev-kit version # imprime a versão instalada do kit
|
|
243
|
+
npx wize-dev-kit version-check [--json] # instalada vs. mais recente (com cache; scriptável; nunca bloqueia)
|
|
241
244
|
```
|
|
242
245
|
|
|
243
246
|
---
|
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.18.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",
|
|
@@ -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();
|