@webpresso/codex-plugin 3.1.3

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.
@@ -0,0 +1,209 @@
1
+ ---
2
+ type: skill
3
+ slug: verify
4
+ title: Verify
5
+ status: active
6
+ scope: repo
7
+ applies_to: [agents]
8
+ related: [testing-philosophy, tph]
9
+ created: "2026-05-07"
10
+ last_reviewed: "2026-07-03"
11
+ name: verify
12
+ description: "Post-implementation quality gate: run checks, TPH audit, cleanup, docs, proof."
13
+ argument-hint: "<target> [--full] where target is: package|file|plan-slug|all"
14
+ hooks:
15
+ Stop:
16
+ - command: wp audit agents
17
+ timeout: 20
18
+ ---
19
+
20
+ # Verify
21
+
22
+ Post-implementation quality gate. Run after implementation exists, before claiming `done`.
23
+
24
+ `/fix` owns reproduction, root-cause analysis, and the minimal repair. `/verify` owns the broader question: **is this work actually complete, integrated, and free of stale garbage?**
25
+
26
+ ## Iron law — evidence before claims
27
+
28
+ No completion claim without fresh verification evidence.
29
+
30
+ Before saying `done`, `fixed`, `passes`, or `clean`:
31
+
32
+ 1. Identify the command or log that proves the claim.
33
+ 2. Run it now, or cite the fresh log from the just-completed run.
34
+ 3. Read the exit code and summary — do not infer from partial output.
35
+ 4. State the actual result, including the log path when the repo records one.
36
+ 5. If another agent made the change, inspect the diff yourself before repeating the claim.
37
+
38
+ Not sufficient: "should pass", "looks correct", lint-only evidence for runtime claims, or another agent's success report without independent verification.
39
+
40
+ ## Usage
41
+
42
+ ```bash
43
+ /verify <target>
44
+ /verify <target> --full
45
+ ```
46
+
47
+ `<target>` is a file path, package name, blueprint slug, or `all`.
48
+
49
+ Follow the repo's current routing and command surface:
50
+
51
+ - use repo-owned quality wrappers first
52
+ - use injected quality-tool routing when present
53
+ - use bounded large-output tooling when the repo instructs it
54
+ - reuse fresh logs instead of re-running broad commands just to inspect output
55
+
56
+ ## Folded health dashboard
57
+
58
+ `/health` is folded into this quality gate. When the user asks for repo health,
59
+ run the available repo facades only as far as needed, then return a concise
60
+ scorecard: score, pass/fail table, top risks, skipped checks with reasons, and
61
+ the next command that most improves confidence.
62
+
63
+ ## Folded testing-philosophy gate
64
+
65
+ `/tph` is folded into this quality gate. Every `/verify` run must apply the
66
+ Testing Philosophy Helper, not leave test-quality review as an optional separate
67
+ workflow:
68
+
69
+ 1. Load the `tph`/`testing-philosophy` skill guidance before judging changed tests.
70
+ 2. Run the repo audit when available:
71
+
72
+ ```bash
73
+ wp audit test-smells
74
+ ```
75
+
76
+ 3. Treat TPH findings as verification findings: over-mocking, weak assertions,
77
+ tautologies, implementation-only spy assertions, wrong test placement, or
78
+ missing integration/E2E coverage can block a `done` or `merge-ready` claim.
79
+ 4. If no tests changed, still run or explicitly cite the fresh TPH audit result
80
+ and state that no test-quality diff review was needed.
81
+
82
+ ## Phase 0 — Scope and evidence map
83
+
84
+ 1. Identify target type (file / package / blueprint slug / all).
85
+ 2. Map each claim you plan to make to the exact command or log that proves it.
86
+ 3. If the target is a blueprint slug, run the repo's blueprint show/audit surface and record the acceptance boxes that still need proof.
87
+
88
+ ## Phase 1 — Governance gates
89
+
90
+ Run only the gates that apply to the diff:
91
+
92
+ - repo SSOT / schema / config changes → the repo's dedicated check
93
+ - docs or markdown changes → the repo's docs / markdown validation surface
94
+ - blueprint target → the repo's blueprint audit surface
95
+ - agent-surface / catalog changes → the repo's agent or catalog audit surface
96
+
97
+ Hard stop on any failure.
98
+
99
+ ## Phase 2 — Surface verification
100
+
101
+ Run the narrowest checks that prove the touched behavior:
102
+
103
+ - targeted lint
104
+ - targeted typecheck
105
+ - targeted tests
106
+ - build / e2e / package checks only when the change requires them
107
+
108
+ Rules:
109
+
110
+ - Prefer repo wrappers over raw underlying tools.
111
+ - Reuse fresh logs if the runner auto-saves them.
112
+ - Never claim broader correctness than the commands actually proved.
113
+ - If the repo documents a "full QA" bookend, reserve it for the final broad pass rather than every iteration.
114
+
115
+ ## Phase 3 — Cross-surface impact scan
116
+
117
+ Ask:
118
+
119
+ - Did the change alter a public/shared export, type, config shape, command, install path, setup path, update path, operator guidance, or generated surface?
120
+ - Do consumers, mocks, fixtures, docs, help text, generated instruction templates, or skill/catalog references still mention the old shape?
121
+ - Does another package, blueprint, or agent surface need to be updated in the same change?
122
+
123
+ For command-surface, install/setup/update, or operator-guidance changes, explicitly scan affected docs/help/instruction surfaces before proceeding. Include, at minimum:
124
+
125
+ - CLI help text
126
+ - docs/guides
127
+ - generated instruction templates and checked-in generated instruction copies
128
+ - skill text and catalog references
129
+
130
+ Hard stop if a shared contract changed and consumers were not updated.
131
+
132
+ ## Phase 4 — Test quality and behavioral audit
133
+
134
+ The passing test suite is necessary, not sufficient.
135
+
136
+ Check that:
137
+
138
+ - the new or changed tests would fail against the old behavior
139
+ - mocks stay at real external boundaries
140
+ - assertions prove the intended behavior rather than incidental implementation details
141
+ - mixed/partial/error-path coverage exists where the feature demands it
142
+ - UX or operator-facing flows include graceful-degradation coverage when applicable
143
+
144
+ Run the folded TPH gate for every verification target. At minimum, execute `wp audit test-smells` when available and inspect changed tests against the `testing-philosophy` checklist. Add E2E or integration evidence when the change touches user/operator-facing workflows, batch/list behavior, graceful degradation, or other fidelity-sensitive paths.
145
+
146
+ ## Phase 5 — Complexity, compatibility, and dead-code sweep
147
+
148
+ Before claiming done:
149
+
150
+ - remove stale compat aliases and "temporary" branches introduced by the change
151
+ - verify no suppressions were added
152
+ - verify no production `any` slipped in except an explicitly allowed repo test idiom
153
+ - justify every new exported/helper surface with a real consumer or test
154
+ - run the repo's dead-code / dependency checks when the change broadened public surface or added new files
155
+
156
+ This phase exists to catch the garbage that often slips in beside otherwise-correct work.
157
+
158
+ ## Phase 6 — Outside-model approval gate
159
+
160
+ Before claiming merge-ready, obtain outside-voice model approvals unless the
161
+ user explicitly asked for a different approval count or reviewer mix.
162
+
163
+ Default policy:
164
+
165
+ - Require **two extra model approvals** by default.
166
+ - If the user asks for more, fewer, zero, or specific reviewers, follow that
167
+ explicit instruction and report the chosen requirement.
168
+ - These approvals are model outside-voice approvals, not a substitute for
169
+ required human GitHub reviews or branch-protection approvals.
170
+
171
+ Reviewer preference:
172
+
173
+ - When running from Codex, prefer **Claude + one OpenCode Go reviewer**.
174
+ - When running from Claude, prefer **Codex + one OpenCode Go reviewer**.
175
+ - When Codex/Claude outside voice is unavailable, use **two distinct OpenCode Go
176
+ reviewers** if OpenCode is logged in.
177
+ - Prefer the repo's outside-voice skills instead of hand-rolled commands:
178
+ `$agent-kit:claude`, `$agent-kit:codex`, and one or more OpenCode Go reviewer
179
+ skills such as `$agent-kit:opencode-go`, `$agent-kit:qwen`,
180
+ `$agent-kit:deepseek`, `$agent-kit:glm`, `$agent-kit:kimi`,
181
+ `$agent-kit:minimax`, or `$agent-kit:mimo`.
182
+
183
+ Approval evidence requirements:
184
+
185
+ - Each outside reviewer must return a clear `APPROVED`/`BLOCKED` (or equivalent)
186
+ verdict with enough evidence to identify what it reviewed.
187
+ - Record outside approval evidence as PR comments when a PR exists.
188
+ - Each PR comment must include the approving model/tool name, provider/family
189
+ when known, verdict, reviewed commit or branch, and any blockers or caveats.
190
+ - If there is no PR yet, record the same evidence in the final Verify report and
191
+ add the PR comments once the PR exists before calling the PR merge-ready.
192
+ - If an outside reviewer is unavailable (not installed, not logged in, missing
193
+ model, timeout after the reviewer skill's allowed retry path), do not silently
194
+ count it. Try the next preferred reviewer. If the required count still cannot
195
+ be met, report the exact approval gap and say the work is **not merge-ready**.
196
+
197
+ ## Phase 7 — Final completion statement
198
+
199
+ Report:
200
+
201
+ - what was verified
202
+ - which commands/logs prove it
203
+ - which docs/help/instruction surfaces were refreshed when command or operator guidance changed
204
+ - which outside models approved it, with PR comment links when a PR exists
205
+ - what remains intentionally out of scope
206
+
207
+ When catalog assets, generated instruction templates, or checked-in generated instruction copies changed, include the repo's public-package-safety or package-surface leak checks in the verification evidence.
208
+
209
+ If any required check is missing, the correct result is **not done yet**, not a softer claim.