wize-dev-kit 0.23.0 → 0.25.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 +35 -0
- package/README.es.md +3 -1
- package/README.md +3 -1
- package/README.pt-BR.md +3 -1
- package/package.json +1 -1
- package/src/core-skills/module.yaml +1 -1
- package/src/core-skills/wize-no-ai-slop/skill.md +11 -5
- package/src/core-skills/wize-pre-pr-check/skill.md +5 -0
- package/src/method-skills/4-implementation/wize-agent-dev/agent.yaml +1 -0
- package/src/method-skills/4-implementation/wize-dev-story/workflow.md +10 -1
- package/src/method-skills/4-implementation/wize-quick-dev/workflow.md +5 -1
- package/src/orchestrator-skills/wize-check/skill.md +1 -0
- package/src/tea-skills/wize-tea-gate/workflow.md +3 -0
- package/src/tea-skills/wize-tea-review/workflow.md +4 -3
- package/src/web-overlay/playbooks/playwright-vitest.md +17 -0
- package/tools/installer/render-shared.js +6 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,41 @@ 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
|
+
## [0.25.0] — 2026-10-19
|
|
11
|
+
|
|
12
|
+
**Writing hygiene.** `wize-no-ai-slop` stops at the README: the commit messages, PR bodies, code comments and review replies an agent writes get the same pass, and the pattern list gains the one tell it was missing. Ideas from [unslop](https://github.com/michaelshimeles/skills/tree/main/unslop) by Lauren Tan (MIT), rewritten in kit voice; none of its rule text is copied.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **Dev text scope in `wize-no-ai-slop`** — a short "Dev text" section: the subject says what changed in plain words, the body gives the why with a mechanism or number, no chatbot closers, no "This PR enhances" puffery, and prose the agent did not write is never touched. Conventional Commits and the dev-story PR template stay as they are. Shuri (`wize-agent-dev`) now carries the skill.
|
|
17
|
+
- **Pattern 18, chatbot artifacts and sycophancy** — "I hope this helps", "Certainly!", "Great question", "Let me know if"; stacked hedges collapse to one.
|
|
18
|
+
- **Advisory line in `wize-pre-pr-check`** — when a commit range or PR draft exists, run detect mode on commit subjects and the PR title/body. Reports only; never fails the gate.
|
|
19
|
+
- Credit for unslop in the skill header and in the 3 READMEs, next to the No AI Slop entry.
|
|
20
|
+
- `test/writing-hygiene.test.js` guards the rules.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- **`wize-no-ai-slop` Goal** — only PRD, ADR, story and gate keep their own conventions; agent-written dev text is in scope. The self-check says "the patterns above" instead of a hard-coded count (module catalog now says 18). The module catalog entry and the README command line mention commit and PR text.
|
|
25
|
+
- **Principles** — new "Name the actor" line (`is`/`are`/`was` + participle hides who did it; an adverb propping a weak verb means the measured delta is missing). **Pattern 16** — a bold label plus colon that restates the line is a tell; a bold lead-in ending in a period with new detail is fine.
|
|
26
|
+
|
|
27
|
+
## [0.24.0] — 2026-10-19
|
|
28
|
+
|
|
29
|
+
**Ship discipline.** The kit already demanded proof and a clean gate; this release defines what proof is, where it lives and which commit it belongs to, and makes the implementation flows start on a branch instead of assuming one. Ideas from [michaelshimeles/skills](https://github.com/michaelshimeles/skills), rewritten in kit voice.
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
- **Branch guard** in `wize-dev-story` (step 0) and `wize-quick-dev` (step 1.5) — read the current branch and status, resolve the default branch with `git symbolic-ref refs/remotes/origin/HEAD` (no hardcoded `main`), keep any other branch or assigned worktree, and on the default branch create `feat/<story-id>` / `fix/<slug>` (or the repo's own convention). No remote: branch locally.
|
|
34
|
+
- **Proof per change type in `wize-dev-story` step 10** — UI screenshots/recording, CLI/API/perf command output with measured numbers, bug-fix red run plus a captured before-state, docs content and link check. Each proof is labeled with its AC and `passed`/`failed`/`untested` (`untested` needs a reason); UI before/after comes from a pre-change baseline, never a branch switch or stash. Step 9 self-check points at it; `wize-quick-dev` asks for before/after on an observable bug fix.
|
|
35
|
+
- **Hosting and privacy rule for captures** — attach through the PR host's own channel or a CI artifact, never anonymous or public third-party hosts or env-supplied upload endpoints; capture with seeded or fake data and check for PII, tokens, internal URLs and admin screens first. Mirrored as a `wize-pre-pr-check` anti-pattern.
|
|
36
|
+
- **Success-path capture in the Playwright playbook** — a `review` project/tag with always-on screenshot and video, and a `try/finally` context close so the video finalizes even when an assertion fails.
|
|
37
|
+
- **Two lines in the generated `AGENTS.md` Operating context** — a request for a plan, review or investigation never implies editing, pushing or publishing; and the shared-repo rules (one branch or worktree per agent, never touch another agent's uncommitted work, no force-push of the default branch, `--force-with-lease` only on your own branch, regenerate lockfiles instead of hand-merging, stop and report on an unresolvable conflict). Existing installs: delete the kit-generated `AGENTS.md` and re-run `npx wize-dev-kit sync` to regenerate it (the file is skip-if-exists).
|
|
38
|
+
- `test/ship-discipline.test.js` guards the core rules.
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- **TEA evidence is pinned to a commit.** `wize-tea-review` records `evidence` as the artifact or test id plus the commit SHA it was observed on, points at the dev-story proof-per-type block as the single definition of observed evidence, and rejects evidence from a commit other than HEAD. `wize-tea-gate` adds a row — all ACs `met` but evidence unpinned or stale → `CONCERNS` (advisory) / `FAIL` (enforcing) — and counts an `untested` AC as `not-met` unless `WAIVED` with a reason. `wize-check` names the commit in its evidence rule. Gate frontmatter status values are unchanged.
|
|
43
|
+
- **`wize-pre-pr-check` rebases before the push** onto the latest `origin` default branch and re-runs the fast checks; a force push is `--force-with-lease` on your own task branch only, never plain `--force`, never on the default branch or a shared branch.
|
|
44
|
+
|
|
10
45
|
## [0.23.0] — 2026-10-19
|
|
11
46
|
|
|
12
47
|
### Added
|
package/README.es.md
CHANGED
|
@@ -164,7 +164,8 @@ Transversales:
|
|
|
164
164
|
paso de autoría.
|
|
165
165
|
/wize-no-ai-slop Higiene de escrita para texto de usuario final:
|
|
166
166
|
elimina patrones de "AI slop" y palabras de relleno
|
|
167
|
-
preservando la voz del autor
|
|
167
|
+
preservando la voz del autor; cubre también commits y PRs.
|
|
168
|
+
También detecta slop.
|
|
168
169
|
/wize-quick-dev Shuri toma un arreglo pequeño sin el ciclo completo.
|
|
169
170
|
/wize-pre-pr-check Corre lint/format/build/tests unitarios localmente
|
|
170
171
|
antes de abrir un PR — falla rápido, cero costo de runner.
|
|
@@ -283,6 +284,7 @@ npx wize-dev-kit version-check [--json] # instalada vs. más reciente (con cach
|
|
|
283
284
|
- [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.
|
|
284
285
|
- [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.
|
|
285
286
|
- [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`.
|
|
287
|
+
- [unslop](https://github.com/michaelshimeles/skills/tree/main/unslop) por Lauren Tan (MIT) — chequeos de artefactos de chatbot, de actor oculto y de listas con etiqueta en negrita en `/wize-no-ai-slop`; ideas adaptadas, sin texto copiado.
|
|
286
288
|
- [apple-appstore-reviewer (awesome-copilot)](https://github.com/github/awesome-copilot/blob/main/skills/apple-appstore-reviewer/SKILL.md) — auditoría con mentalidad de reviewer para la submisión a App Store; la inspiración para `wize-app-store-review` (gate de publicación del overlay).
|
|
287
289
|
- [ELI5](https://github.com/dreambigou/eli5) por Andrew Ou — explicaciones calibradas al oyente; inspiración de `/wize-eli5`.
|
|
288
290
|
- [Ponytail](https://github.com/DietrichGebert/ponytail) por Dietrich Gebert — revisión orientada a la eliminación (`/wize-subtract`), el marcador de atajo `wize-debt:` con su ledger, y el encuadre medido de "menos código" detrás de la contabilidad de código de la retrospectiva. La reuse ladder del kit comparte los mismos peldaños.
|
package/README.md
CHANGED
|
@@ -164,7 +164,8 @@ Cross-cutting:
|
|
|
164
164
|
(age, role, relationship).
|
|
165
165
|
/wize-no-ai-slop Writing hygiene for end-user-facing prose: removes
|
|
166
166
|
AI-slop patterns and filler while preserving the
|
|
167
|
-
writer's voice
|
|
167
|
+
writer's voice, and agent-written commit/PR text.
|
|
168
|
+
Detects slop on request.
|
|
168
169
|
/wize-quick-dev Shuri takes a small fix without the full ride.
|
|
169
170
|
/wize-pre-pr-check Run lint/format/build/unit tests locally before
|
|
170
171
|
opening a PR — fail fast, zero CI runner cost.
|
|
@@ -282,6 +283,7 @@ npx wize-dev-kit version-check [--json] # installed vs latest (cached; scriptab
|
|
|
282
283
|
- [Whiteport Design Studio expansion](https://github.com/bmad-code-org/bmad-method-wds-expansion) — UX-first methodology, Norse pantheon (Saga, Freya), phase structure.
|
|
283
284
|
- [ELI5](https://github.com/dreambigou/eli5) by Andrew Ou — audience-calibrated explanations; the inspiration for `/wize-eli5`.
|
|
284
285
|
- [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).
|
|
286
|
+
- [unslop](https://github.com/michaelshimeles/skills/tree/main/unslop) by Lauren Tan (MIT) — chatbot-artifact, actor-hiding and inline-header-list checks in `/wize-no-ai-slop`; ideas adapted, no text copied.
|
|
285
287
|
- [awesome-copilot's apple-appstore-reviewer](https://github.com/github/awesome-copilot/blob/main/skills/apple-appstore-reviewer/SKILL.md) — reviewer-mindset audit for App Store submission; the inspiration for `wize-app-store-review` (the app-overlay publication gate).
|
|
286
288
|
- [Ponytail](https://github.com/DietrichGebert/ponytail) by Dietrich Gebert — deletion-first review (`/wize-subtract`), the `wize-debt:` shortcut marker and its ledger, and the measured "less code" framing behind the retrospective's code accounting. The kit's reuse ladder shares its rungs.
|
|
287
289
|
- [akitaonrails's my-skills — pr-audit](https://github.com/akitaonrails/my-skills/tree/master/pr-audit) by Fabio Akita — untrusted-input PR threat model, claim ledger, and hostile-change gate before execution; the reference behind `wize-pr-audit`.
|
package/README.pt-BR.md
CHANGED
|
@@ -166,7 +166,8 @@ Transversais:
|
|
|
166
166
|
para o ouvinte (idade, papel, relação).
|
|
167
167
|
/wize-no-ai-slop Higiene de escrita para texto de usuário final:
|
|
168
168
|
remove padrões de "AI slop" e palavras de enchimento
|
|
169
|
-
preservando a voz do autor
|
|
169
|
+
preservando a voz do autor; cobre também commits e PRs.
|
|
170
|
+
Também detecta slop.
|
|
170
171
|
/wize-quick-dev Shuri pega uma correção pequena sem o ciclo completo.
|
|
171
172
|
/wize-pre-pr-check Roda lint/format/build/testes unitários localmente
|
|
172
173
|
antes de abrir um PR — falha cedo, zero custo de runner.
|
|
@@ -284,6 +285,7 @@ npx wize-dev-kit version-check [--json] # instalada vs. mais recente (com cache
|
|
|
284
285
|
- [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.
|
|
285
286
|
- [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.
|
|
286
287
|
- [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`.
|
|
288
|
+
- [unslop](https://github.com/michaelshimeles/skills/tree/main/unslop) por Lauren Tan (MIT) — checagens de artefatos de chatbot, de ator oculto e de listas com rótulo em negrito no `/wize-no-ai-slop`; ideias adaptadas, sem texto copiado.
|
|
287
289
|
- [apple-appstore-reviewer (awesome-copilot)](https://github.com/github/awesome-copilot/blob/main/skills/apple-appstore-reviewer/SKILL.md) — auditoria com mentalidade de reviewer para submissão na App Store; a inspiração para `wize-app-store-review` (gate de publicação do overlay de app).
|
|
288
290
|
- [ELI5](https://github.com/dreambigou/eli5) por Andrew Ou — explicações calibradas ao ouvinte; inspiração do `/wize-eli5`.
|
|
289
291
|
- [Ponytail](https://github.com/DietrichGebert/ponytail) por Dietrich Gebert — revisão orientada a deleção (`/wize-subtract`), o marcador de atalho `wize-debt:` com seu ledger, e o enquadramento medido de "menos código" por trás da contabilidade de código da retrospectiva. A reuse ladder do kit compartilha os mesmos degraus.
|
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.25.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",
|
|
@@ -21,7 +21,7 @@ skills:
|
|
|
21
21
|
description: "Explain anything to anyone — adapts vocabulary, analogies, tone, depth and framing to the audience (age, role, relationship)."
|
|
22
22
|
- code: wize-no-ai-slop
|
|
23
23
|
name: "No AI Slop"
|
|
24
|
-
description: "Writing hygiene for end-user
|
|
24
|
+
description: "Writing hygiene for end-user prose and agent-written commits and PRs — removes 18 AI-generated patterns and banned words while preserving the writer's voice; also detects slop without rewriting."
|
|
25
25
|
- code: wize-brainstorming
|
|
26
26
|
name: "Brainstorming"
|
|
27
27
|
description: "Divergent-then-convergent ideation; produces idea-pool.md."
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
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."
|
|
3
|
+
description: "Use quando qualquer agente for escrever ou editar texto para usuário final — READMEs, runbooks, microcopy, release notes, UX copy — ou texto de dev (commits, PRs) para remover padrões de 'AI slop' sem achatar a voz do autor. Também detecta slop em rascunhos sem reescrever."
|
|
4
4
|
name: No AI Slop
|
|
5
5
|
module: core
|
|
6
6
|
status: ready
|
|
@@ -8,9 +8,9 @@ status: ready
|
|
|
8
8
|
|
|
9
9
|
# No AI Slop — human writing hygiene
|
|
10
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
|
|
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, and to the dev text an agent writes itself: commit messages, PR titles and bodies, code comments, review replies. PRD, ADR, story and gate keep their own conventions.
|
|
12
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.
|
|
13
|
+
Adapted to the Wize method from [no-ai-slop](https://github.com/petergyang/no-ai-slop) by Peter Yang (MIT) and, for the chatbot-artifact, actor and inline-header-list checks, [unslop](https://github.com/michaelshimeles/skills/tree/main/unslop) by Lauren Tan (MIT) — credited in the README.
|
|
14
14
|
|
|
15
15
|
## Two jobs
|
|
16
16
|
|
|
@@ -32,6 +32,7 @@ Adapted to the Wize method from [no-ai-slop](https://github.com/petergyang/no-ai
|
|
|
32
32
|
- **Every sentence earns its place.** Cut empty qualifiers and throat-clearing.
|
|
33
33
|
- **Active voice, human subjects.** "The team shipped it Tuesday" beats "the decision emerged". Never let inanimate things do human verbs.
|
|
34
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
|
+
- **Name the actor.** `is`/`are`/`was` + participle hides who did it ("the config was updated" → "Maria updated the config"). An adverb propping a weak verb ("greatly improved") means the measured delta is missing; use it.
|
|
35
36
|
- **Concrete beats abstract.** "Improved efficiency" → "cut deploy time from 40 min to 4". Names, numbers, dates, mechanisms, examples.
|
|
36
37
|
- **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
38
|
- **Show, don't label.** Make facts carry the emphasis; delete commentary that tells the reader a point is important, surprising, or obvious.
|
|
@@ -61,8 +62,13 @@ Adapted to the Wize method from [no-ai-slop](https://github.com/petergyang/no-ai
|
|
|
61
62
|
13. **Rhetorical setups** — "What if I told you…", "Think about it:", self-answered "Question? Answer."
|
|
62
63
|
14. **Fake-profound kickers** — delete the cute final line; end on the clearest concrete sentence, takeaway, or next action.
|
|
63
64
|
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
|
+
16. **Formatting slop** — emoji in headings, bold sprinkled mid-sentence, bullets where two sentences of prose read better, headers over two-sentence sections. In inline-header lists, a bold label plus colon that restates the line ("**Speed:** it is faster") is a tell; a bold lead-in ending in a period that opens new detail is fine.
|
|
65
66
|
17. **Em dashes as a rhythm crutch** — none in short copy; 1–2 in long drafts only when they clearly beat commas or parentheses.
|
|
67
|
+
18. **Chatbot artifacts and sycophancy** — "I hope this helps", "Certainly!", "Great question", "Let me know if…". Delete. Stacked hedges ("could potentially possibly") collapse to one: "may".
|
|
68
|
+
|
|
69
|
+
## Dev text
|
|
70
|
+
|
|
71
|
+
Commit messages, PR titles and bodies, code comments and review replies the agent wrote are in scope. The subject says what changed in plain words; the body gives the why, with a mechanism or number. No chatbot closers, no "This PR enhances…" puffery. Conventional Commits format and the dev-story PR template stay as they are. Never touch prose the agent did not write.
|
|
66
72
|
|
|
67
73
|
## Self-check (eval)
|
|
68
74
|
|
|
@@ -71,7 +77,7 @@ Before handing off end-user prose, answer:
|
|
|
71
77
|
- Does it preserve the writer's point, voice, and useful edge — without invented claims? (pass/fail)
|
|
72
78
|
- Is cutting proportional, leaving strong human sentences alone? (pass/fail)
|
|
73
79
|
- Does every generic sentence survive the portability test? (pass/fail)
|
|
74
|
-
- Are banned words, filler phrases, and the
|
|
80
|
+
- Are banned words, filler phrases, and the patterns above absent? (pass/fail)
|
|
75
81
|
- Would the writer recognize it as their own voice when read to a sharp colleague? (pass/fail)
|
|
76
82
|
|
|
77
83
|
If any check fails, fix and re-check before returning the draft.
|
|
@@ -95,6 +95,10 @@ Comandos típicos por stack (detectados em tempo real, não hardcoded):
|
|
|
95
95
|
|
|
96
96
|
Se um check falhar, pare e reporte. Não prossiga para o próximo.
|
|
97
97
|
|
|
98
|
+
Consultivo, nunca bloqueia: se já existir intervalo de commits ou rascunho de PR, rode o modo detect de `wize-no-ai-slop` nos assuntos dos commits e no título/corpo do PR e reporte os padrões achados.
|
|
99
|
+
|
|
100
|
+
Antes do push: faça rebase na última branch default do `origin` e rode de novo os checks rápidos. Se precisar de force push, use `--force-with-lease` só na sua própria branch de tarefa — nunca `--force` puro, nunca na branch default ou em branch compartilhada.
|
|
101
|
+
|
|
98
102
|
### 4. Reportar
|
|
99
103
|
|
|
100
104
|
Formato compacto, uma linha por check:
|
|
@@ -125,6 +129,7 @@ Gate limpo. Pode abrir o PR.
|
|
|
125
129
|
- **Ignorar falhas de lint.** Lint fail = PR fail. Corrija antes.
|
|
126
130
|
- **Executar E2E localmente toda vez.** E2E é caro; deixe para o CI ou rode antes de merge.
|
|
127
131
|
- **Substituir o CI.** Este gate é complementar, não substituto.
|
|
132
|
+
- **Mudança de UI com capturas não revisadas.** Prints e gravações podem vazar PII, tokens ou URLs internas; confira antes de anexar.
|
|
128
133
|
|
|
129
134
|
## Hand-off
|
|
130
135
|
|
|
@@ -39,6 +39,10 @@ I work inside a repo with WDK installed: `.wize/`, `AGENTS.md`, and the `wize-*`
|
|
|
39
39
|
|
|
40
40
|
## The loop (TDD, story-scoped)
|
|
41
41
|
|
|
42
|
+
### 0. Branch guard
|
|
43
|
+
|
|
44
|
+
Run `git branch --show-current` and `git status --short`, and resolve the default branch with `git symbolic-ref refs/remotes/origin/HEAD` (never hardcode `main`). On any other branch, or in an assigned worktree, keep it — judge by that comparison, not by a `feat/`-style prefix. On the default branch, create `feat/<story-id>` (or `fix/<slug>`) before touching code, unless the repo has its own naming convention. No remote: branch locally.
|
|
45
|
+
|
|
42
46
|
### 1. Read
|
|
43
47
|
|
|
44
48
|
Story ACs, out-of-scope, notes, `tea-design.md`. Confirm the test split. If the design doesn't match the story (mismatch on test count, mock, environment), ping Hawkeye **before** writing code.
|
|
@@ -139,13 +143,18 @@ This is how the brownfield baseline stays alive instead of going stale 6 months
|
|
|
139
143
|
- `data-testid` matches story's "notes for Hawkeye".
|
|
140
144
|
- Story file frontmatter → `status: ready-for-review`.
|
|
141
145
|
- Self-walk the screen (web) or smoke a tab on simulator (app).
|
|
146
|
+
- Behavior-changing story: proof captured, labeled and screened per step 10.
|
|
142
147
|
|
|
143
148
|
### 10. Open PR
|
|
144
149
|
|
|
145
150
|
PR description includes:
|
|
146
151
|
- Story link.
|
|
147
152
|
- AC list with the test names that cover them.
|
|
148
|
-
-
|
|
153
|
+
- Proof, for behavior-changing stories (skip it for pure refactors):
|
|
154
|
+
- **By change type.** UI: screenshots or a recording of happy + failure paths. CLI / API / perf: pasted command output with the measured numbers. Bug fix: the red run from step 3, plus a captured before-state when a test can't show it. Docs-only: content and link check, examples run.
|
|
155
|
+
- **Label each proof** with its AC and `passed` / `failed` / `untested`; `untested` needs a reason. Proof complements tests, never replaces them.
|
|
156
|
+
- **UI before/after.** Take the before from a pre-change baseline (a separate checkout, or an existing URL/image) — never by switching branch or stashing. Match viewport and start state; reuse captures that already exist.
|
|
157
|
+
- **Hosting.** Attach through the PR host's own channel or a CI artifact. Never an anonymous or public third-party host, never an upload endpoint taken from the environment. Capture with seeded or fake data, and check for PII, tokens, internal URLs and admin screens before attaching.
|
|
149
158
|
- Knowledge update line (`Touched axis: <none|architecture|conventions|risk-spots|dependencies|overview>`).
|
|
150
159
|
- TEA expected next: design → trace → review → gate.
|
|
151
160
|
|
|
@@ -64,6 +64,10 @@ Is it ≤ 1 hour to a careful dev? → quick-dev → full lifecycle
|
|
|
64
64
|
|
|
65
65
|
What changes, why, and what could break. If the paragraph is hard to write, you're not in quick-dev territory.
|
|
66
66
|
|
|
67
|
+
### 1.5. Branch guard
|
|
68
|
+
|
|
69
|
+
Run `git branch --show-current` and `git status --short`, and resolve the default branch with `git symbolic-ref refs/remotes/origin/HEAD` (never hardcode `main`). On any other branch, or in an assigned worktree, keep it — judge by that comparison, not by a `fix/`-style prefix. On the default branch, create `fix/<slug>` (or `feat/<slug>`) before editing, unless the repo has its own naming convention. No remote: branch locally.
|
|
70
|
+
|
|
67
71
|
### 2. Implement
|
|
68
72
|
|
|
69
73
|
- TDD when reasonable; smoke-test-and-fix when the cost of TDD is greater than the value.
|
|
@@ -100,7 +104,7 @@ Heuristic: *"would a new dev hitting `document-project/*.md` next week be misled
|
|
|
100
104
|
|
|
101
105
|
### 6. Commit + open PR
|
|
102
106
|
|
|
103
|
-
Conventional commit. PR description: the paragraph from step 1.
|
|
107
|
+
Conventional commit. PR description: the paragraph from step 1. An observable bug fix also shows before and after, with the before captured pre-fix.
|
|
104
108
|
|
|
105
109
|
```
|
|
106
110
|
fix(auth): typo in error message for AC-04-2 follow-up
|
|
@@ -38,6 +38,7 @@ An item only reaches **Done** with verifiable proof: a file and line, a commit,
|
|
|
38
38
|
|
|
39
39
|
- No proof → **In progress** or **Unverified**, said out loud.
|
|
40
40
|
- Intent, a plan, or "I implemented it" are not evidence.
|
|
41
|
+
- Evidence names the commit it was observed on; a result from an older commit is stale, so the item stays `[~]`.
|
|
41
42
|
- If something was written but not validated, the item is `[~]` with the missing validation named next to it.
|
|
42
43
|
|
|
43
44
|
Overstating progress is the one serious failure mode of this skill.
|
|
@@ -38,8 +38,11 @@ Hawkeye drives. The four inputs (`design`, `trace`, `review`, plus `nfr` at epic
|
|
|
38
38
|
| Any AC `not-met` | **FAIL** |
|
|
39
39
|
| NFR `FAIL` on the epic (last story) | **FAIL** |
|
|
40
40
|
| `tea-review` flagged `knowledge_axes_touched` ≠ `knowledge_axes_updated` (any axis touched without update) | **CONCERNS** (advisory mode) / **FAIL** (enforcing mode) — adds finding `KN-NN` |
|
|
41
|
+
| All ACs `met`, but `review.md` evidence is unpinned (no commit SHA) or from a commit other than HEAD | **CONCERNS** (advisory mode) / **FAIL** (enforcing mode) |
|
|
41
42
|
| Failing AC OR non-neg NFR with documented business rationale + senior signoff | **WAIVED** |
|
|
42
43
|
|
|
44
|
+
An AC the story left `untested` counts as `not-met`, unless **WAIVED** with a reason.
|
|
45
|
+
|
|
43
46
|
Score (0–100): heuristic. `100 - (10 × high) - (5 × medium) - (2 × low)`. Floor 0.
|
|
44
47
|
|
|
45
48
|
## Policy
|
|
@@ -31,7 +31,7 @@ Hawkeye drives. Runs at story end, right before `tea-gate`.
|
|
|
31
31
|
|
|
32
32
|
### 1. AC check (per AC)
|
|
33
33
|
|
|
34
|
-
For each AC, observe the actual behavior on a staging or local build and decide: `met` / `partial` / `not-met`.
|
|
34
|
+
For each AC, observe the actual behavior on a staging or local build and decide: `met` / `partial` / `not-met`. Record the `evidence` as the artifact or test id **plus the commit SHA it was observed on**. What counts as observed evidence is defined once, in the proof-per-type block of `wize-dev-story` step 10; for UI ACs, prefer a before/after pair when a baseline exists.
|
|
35
35
|
|
|
36
36
|
### 2. Test discipline
|
|
37
37
|
|
|
@@ -83,10 +83,10 @@ status: PASS
|
|
|
83
83
|
ac_check:
|
|
84
84
|
- id: AC-02-1
|
|
85
85
|
met: true
|
|
86
|
-
evidence: "e2e/onboarding/invite.spec.ts::happy path passed
|
|
86
|
+
evidence: "e2e/onboarding/invite.spec.ts::happy path passed @ 4f2a9c1 (PR-#412); recording in CI artifact #412-1"
|
|
87
87
|
- id: AC-02-2
|
|
88
88
|
met: true
|
|
89
|
-
evidence: "InviteForm.spec.tsx::error region announces"
|
|
89
|
+
evidence: "InviteForm.spec.tsx::error region announces @ 4f2a9c1"
|
|
90
90
|
knowledge_axes_touched: [conventions, risk-spots]
|
|
91
91
|
knowledge_axes_updated: [conventions, risk-spots] # leave empty array if axes touched but no update happened
|
|
92
92
|
findings:
|
|
@@ -136,6 +136,7 @@ Recommend `gate PASS` with one low-severity finding to fix in a follow-up.
|
|
|
136
136
|
|
|
137
137
|
- **Review without walking the code.** Reading the test names isn't review.
|
|
138
138
|
- **AC marked "met" without observed evidence.** Tests passing + screenshot/recording, please.
|
|
139
|
+
- **Evidence from a commit other than HEAD.** Re-observe on HEAD.
|
|
139
140
|
- **Findings without owners.** Same as everywhere else in the kit.
|
|
140
141
|
- **Recommending PASS when an AC is `partial`.** No.
|
|
141
142
|
- **Recommending PASS when a non-negotiable NFR slipped.** That's a gate FAIL.
|
|
@@ -110,6 +110,23 @@ export default defineConfig({
|
|
|
110
110
|
});
|
|
111
111
|
```
|
|
112
112
|
|
|
113
|
+
### Capturing proof (success path)
|
|
114
|
+
|
|
115
|
+
The config above records failures only. For review evidence, scope always-on capture to a project (or tag) so the full suite stays cheap:
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
{ name: 'review', grep: /@review/, use: { ...devices['Desktop Chrome'], screenshot: 'on', video: 'on' } }
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Outside the test runner, close the context in `finally` so the video finalizes even when an assertion throws:
|
|
122
|
+
|
|
123
|
+
```ts
|
|
124
|
+
const context = await browser.newContext({ recordVideo: { dir: 'test-results/proof' } });
|
|
125
|
+
try { /* walk the flow, assert */ } finally { await context.close(); }
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Write captures to a gitignored directory and attach them per the hosting rule in `wize-dev-story` step 10. `reuseExistingServer: true` will happily record someone else's app, so confirm the server on the port is your build first.
|
|
129
|
+
|
|
113
130
|
### Page Object Model (light)
|
|
114
131
|
|
|
115
132
|
```ts
|
|
@@ -307,6 +307,12 @@ function renderAgentsMd(kitRoot, projectRoot, opts = {}) {
|
|
|
307
307
|
'implementation and review, a high-capability tier only for architecture, critical',
|
|
308
308
|
'decisions, or final adversarial review.',
|
|
309
309
|
'',
|
|
310
|
+
'A request for a plan, review or investigation never implies editing, pushing or publishing.',
|
|
311
|
+
'',
|
|
312
|
+
'If several agents share a repo: one branch or worktree per agent; never touch another agent\'s',
|
|
313
|
+
'uncommitted work; never force-push the default branch (`--force-with-lease` only on your own',
|
|
314
|
+
'branch); regenerate lockfiles instead of hand-merging; on an unresolvable conflict, stop and report.',
|
|
315
|
+
'',
|
|
310
316
|
'## Writing code (always on)',
|
|
311
317
|
'',
|
|
312
318
|
'Before writing new code, climb this ladder and stop at the first rung that holds:',
|