voidmachine 5.0.8 → 6.0.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/core-assets/.claude-plugin/plugin.json +12 -1
- package/core-assets/PHILOSOPHY.md +11 -1
- package/core-assets/data/catalog.v3.json +35 -35
- package/core-assets/data/certification.json +1 -1
- package/core-assets/data/model.json +34 -34
- package/core-assets/hooks/_void-hook.mjs +722 -509
- package/core-assets/hooks/outcome-meter.sh +2 -1
- package/core-assets/skills/void-autopilot/SKILL.md +3 -3
- package/core-assets/skills/void-brainstorm/SKILL.md +40 -61
- package/core-assets/skills/void-code-review/SKILL.md +23 -10
- package/core-assets/skills/void-commit-discipline/SKILL.md +8 -9
- package/core-assets/skills/void-debug/SKILL.md +9 -10
- package/core-assets/skills/void-domain-driven-design/SKILL.md +1 -1
- package/core-assets/skills/void-frontend-design/SKILL.md +1 -1
- package/core-assets/skills/void-implement/SKILL.md +60 -23
- package/core-assets/skills/void-llm-cost-discipline/SKILL.md +3 -0
- package/core-assets/skills/void-orchestrate/SKILL.md +42 -0
- package/core-assets/skills/void-plan/SKILL.md +12 -17
- package/core-assets/skills/void-qa/SKILL.md +15 -14
- package/core-assets/skills/void-tdd/SKILL.md +33 -84
- package/core-assets/skills/void-testing/SKILL.md +1 -1
- package/core-assets/skills/void-ticket/SKILL.md +2 -0
- package/core-assets/skills/void-typescript-strict/SKILL.md +5 -5
- package/core-assets/skills/void-verify/SKILL.md +57 -159
- package/dist/main.js +925 -333
- package/package.json +3 -3
|
@@ -7,7 +7,14 @@ description: Use when taking a single ticket from ready through shipped at exper
|
|
|
7
7
|
|
|
8
8
|
One ticket, taken from ready to shipped, with the coverage a senior expert team would give it: architecture, tests, end-to-end, UX, security, review. This is the single canonical definition of "execute one ticket well." Both interactive work and `void-autopilot` delegate here, so the cycle is defined once and improving it improves both.
|
|
9
9
|
|
|
10
|
-
**Core principle:**
|
|
10
|
+
**Core principle:** keep the senior engineering floor, scale the work to the actual change.
|
|
11
|
+
This skill owns applicability across the cycle: inspect the affected behavior, boundary and risk
|
|
12
|
+
once; load the relevant standards and consult the primary domain specialist before coding.
|
|
13
|
+
An explicit user request with clear scope and acceptance criteria is an executable unit; a
|
|
14
|
+
tracker ticket, separate spec or plan is not required merely to begin authorized work.
|
|
15
|
+
Stop when acceptance criteria, applicable proofs and independent review are satisfied.
|
|
16
|
+
Preferences and optional improvements never start another correction cycle. TDD before new
|
|
17
|
+
behavior, security, KISS and SOLID remain requirements; ceremony is not a substitute for them.
|
|
11
18
|
|
|
12
19
|
**Attribution**: see `.source`.
|
|
13
20
|
|
|
@@ -22,6 +29,16 @@ capability fallbacks follow that policy without skipping triggered quality gates
|
|
|
22
29
|
Preserve one `leadWriterId` through corrections; the coordinator retains user intent
|
|
23
30
|
and decisions. Pass any orchestrator-owned panel contract unchanged.
|
|
24
31
|
|
|
32
|
+
## Optional usage linkage
|
|
33
|
+
|
|
34
|
+
At work start, when both the existing mission ID and exact native session journal ID are known,
|
|
35
|
+
the coordinator runs `void-machine mission usage-bind --id <mission> --source <session-journal>`.
|
|
36
|
+
This begins prospective counting without changing installed hooks. Never guess a journal from
|
|
37
|
+
recent activity, timestamps or an inherited thread/session variable; a shared session is not
|
|
38
|
+
worker isolation. If identification is unavailable, report unknown and continue the authorized
|
|
39
|
+
work. The coordinator owns this action, not an ID reconstruction task for the user. `void-verify`
|
|
40
|
+
closes the interval and reports once at the end; no per-edit command or extra delivery gate.
|
|
41
|
+
|
|
25
42
|
## Canonical team orchestration
|
|
26
43
|
|
|
27
44
|
When the caller supplies `panel.provider: orchestrator`, the orchestrator owns specialist
|
|
@@ -37,8 +54,8 @@ materializes its runtime-neutral specialist envelopes from the current plan.
|
|
|
37
54
|
the worktree and code; specialists and the independent reviewer never edit.
|
|
38
55
|
2. Start with `mission start --ticket <ticket>` and follow `mission dispatch --id <mission>
|
|
39
56
|
--json`. The frozen task and controller own routing, state and correction budget. Normal
|
|
40
|
-
dispatch starts the writer without a compulsory preparation panel.
|
|
41
|
-
|
|
57
|
+
dispatch starts the writer without a compulsory preparation panel. The writer still obtains
|
|
58
|
+
the primary domain specialist advice required by pass 5 before production edits.
|
|
42
59
|
For canonical `invoke-specialists` actions, pass each envelope unchanged through
|
|
43
60
|
`void-orchestrate` and record actual starts/results with `mission specialist-event --id <mission>`.
|
|
44
61
|
Reconcile any existing invocation; a missing response resumes its run, never another cycle.
|
|
@@ -98,24 +115,24 @@ Do NOT use this to plan several tickets (that is `void-plan`) or to author the t
|
|
|
98
115
|
|
|
99
116
|
Run in order. Each pass names the skill it composes and the predicate that fires it. `ALWAYS` passes never skip; conditional passes skip only when their predicate is false. You ALWAYS evaluate every predicate yourself against the actual change: a ticket declaration may ADD a pass, never cancel one whose predicate fired.
|
|
100
117
|
|
|
101
|
-
1. **Ingest + completeness gate** (ALWAYS).
|
|
102
|
-
2. **Architecture pass** (IF
|
|
118
|
+
1. **Ingest + completeness gate** (ALWAYS). Read the complete explicit request or ticket, available acceptance criteria, affected contracts and real blockers. Reuse decisions already authorized in the conversation. Resolve only ambiguities that change the result, safety or scope; missing labels or a prose template do not block implementation. Use `void-brainstorm` for an unresolved structural choice and `void-plan` for dependent steps that need durable coordination, not for routine edits. For provider-backed work, read native relations and claim it before edits. A scoped programme still supplies its linked plan/spec; canonical specialist requests still require the authenticated mission plan.
|
|
119
|
+
2. **Architecture pass** (IF structure, a module boundary, data model or public contract changes). Apply `void-hexagonal-architecture` and `void-domain-driven-design` to the affected boundary. Keep KISS and SOLID: a layer or branded type earns its place through an invariant, responsibility or substitution contract, not its name. Consult `type-design-analyzer` or `doctrine-critic` when a concrete design question needs that expertise. Honor applicable ADRs; use `void-decide` only for a lasting structural choice.
|
|
103
120
|
3. **Source grounding** (ALWAYS; the source depends on what the change touches). Read the relevant sources before the first line, per the Anti-rustine section of `PHILOSOPHY.md`. For a third-party configuration, schema or call signature, compose `void-source-driven-development`: official documentation **of the installed version**, never an upgrade by default. For internal code, read the owning contract, types, source and project docs of what you are about to change. Assumed semantics produce bugs that cost hours to find, and the assumption is invisible in the diff — which is why this runs before the writing rather than at review. Cite a source briefly when it helps understand or record a choice; a missing citation never blocks on its own.
|
|
104
121
|
4. **Migration safety** (IF it changes a DB schema or ships a migration). Compose `void-migrations` (and `void-drizzle-migration-safe` on a Drizzle/Postgres stack): zero-downtime, two-phase, batched backfill, locking analysis. **Once the migration is generated and safety-reviewed, apply it to the dev/local database before the TDD and E2E passes run** — otherwise those tests execute against a stale schema and prove nothing about the new shape. **This cycle only ever applies to dev/local; production migrations run through CI / GitHub Actions on merge, never from a worker or this session** (see the `void-migrations` anti-rule). A schema change must never reach the rest of the cycle without this pass.
|
|
105
|
-
5. **Targeted preparation advice** (IF a
|
|
122
|
+
5. **Targeted preparation advice** (IF production behavior, a coding contract or implementation structure changes). Detect the affected domains and invoke the primary domain specialist before implementation through `void-orchestrate`; reuse its advice through corrections unless its actual inputs change. Add an expert only for a distinct risk the primary cannot cover. Give the accepted brief, affected contract and bounded question; collect its actual response before code. Documentation-only, generated-only or mechanical changes with no behavioral/contract effect need no coding specialist. This advice is not an automatic canonical gate or a quorum of every applicable profile. With `panel.provider: orchestrator`, consume its supplied advice without duplication. For canonical `invoke-specialists`, preserve runtime, agentName, missionId, contextPack, reviewSubject and reviewScope; record actual starts/results. Reconcile uncertain invocations, keep at most four simultaneous agents, and never treat a wait timeout as failure. Preserve real unresolved findings and author-owned evidence obligations; advice never substitutes for final independent review.
|
|
106
123
|
6. **TDD implementation** (ALWAYS). During development, the coordinator may create or reuse a draft pull request for the branch. Keep work-in-progress PRs in draft and run focused local checks; do not wait for full remote CI per iteration. `void-verify` owns the transition to complete integration checks and its portable CI template. The single lead writer composes `void-tdd` + `void-testing`. Red, green, refactor. Unit tests for the behavior, green before moving on. Review specialists remain read-only.
|
|
107
124
|
7. **Async + idempotency** (IF it sends email, calls an external side-effecting API, enqueues a job, or mints a single-use token). Compose `void-async-safety`: idempotency keys, replay/dedup window, bounded retries, single-use enforcement.
|
|
108
|
-
8. **End-to-end tests** (IF
|
|
109
|
-
9. **UX/UI pass** (IF
|
|
110
|
-
10. **Security pass** (ALWAYS
|
|
125
|
+
8. **End-to-end tests** (IF changed user behavior crosses integration boundaries that focused tests cannot prove). Extend the relevant journey in the configured E2E suite. Reuse an existing current proof that already covers the changed contract; do not add a duplicate journey for a local presentation edit.
|
|
126
|
+
9. **UX/UI pass** (IF a UI contract changes). Apply `void-frontend-design` and `void-accessibility` to affected controls, states and viewports. Verify keyboard/touch parity and mobile/desktop behavior for the changed surface through focused tests and `void-qa`. Use `void-ui-review` for a new or materially redesigned journey, or a specific unresolved usability defect; a local edit does not trigger a full application audit. Existing design standards remain binding.
|
|
127
|
+
10. **Security pass** (ALWAYS inspect the change; focused analysis IF a trust boundary changes). Apply `void-security-guidance` to external input, auth, tenancy, untrusted content, secrets and side effects as they are designed and implemented. A final security review does not replace safe boundaries during development. `void-security-audit` is a deliberately requested deep audit, not an automatic second full review of every ticket.
|
|
111
128
|
11. **Review** (ALWAYS). Run the single independent general review in the bounded cycle above. Compose `void-code-review` for that pass. Relevant preparation specialists advise before implementation; they are not a mandatory repeated post-implementation panel. After corrections, inspect only the affected findings and behavior. Findings are judged by demonstrated consequence, not reviewer majority.
|
|
112
129
|
**Judge the change against the economy-of-means section of `PHILOSOPHY.md`**: a judgment, not a score, explained briefly only when that helps record a choice. It blocks only on a demonstrated defect (security, broken behavior, or a boundary or contract violated with a real consequence); anything else is advisory.
|
|
113
130
|
**Review the draft against the anti-patch rule.** The review is real; no verbal ritual is required. The first implementation that comes to mind is often a patch at the wrong level of abstraction: tokenising a string where the API takes a typed schema, mocking a field the real adapter never returns, disabling a flag instead of understanding what it blocks. A V0 mock mirrors the real adapter's signature, never a convenience one. It is judged **here**, on the first draft, because before the writing there is nothing to judge — and it does not belong to the Architecture pass, since a patch slips in precisely through the changes that touch no structure at all.
|
|
114
|
-
12. **Verification before completion** (ALWAYS). Compose `void-verify
|
|
131
|
+
12. **Verification before completion** (ALWAYS). Compose `void-verify`, which owns the single informational ticket-end usage recap: applicable typecheck, tests, hooks and affected viewports, all observed not assumed. Reuse proofs whose declared inputs are unchanged; re-run affected proofs, plus required integration checks on the candidate. **A red suite is adjudicated before proceeding** (from gstack `/ship`): each failure is *in-branch* (you touched the test/code, or it traces to the diff → it is yours, fix it) or *pre-existing* (neither touched → offer fix / TODO / skip); ambiguous defaults to in-branch. Test on the **merged base**, not the stale branch. Completion requires the independent review, resolution of blocking defects, and fresh applicable verification proofs; native runtime attestation alone is not a delivery prerequisite.
|
|
115
132
|
13. **Dogfood the shipped surface** (IF the ticket adds or changes a CLI command, a hook, an executable skill, or any output a person will read). Run the thing, on the **real repository**, and quote what came back in the evidence.
|
|
116
133
|
This exists because the passes above have a measured hit rate of zero on a whole class of defect. Six shipped on 2026-08-06 with typecheck, lint, 2,700 tests and five CI checks green: five were caught by using the thing on the real tree, one by the harness itself, none by CI and none by the human merge gate. One of them reported "5 path(s) not extracted" about files it had read, parsed and indexed — the exact lie the feature existed to prevent — and it surfaced by running the command on the repo, after merge. Under autopilot nobody comes back to the previous ticket, so a defect found that way is a defect not found at all.
|
|
117
134
|
**A fixture is not a dogfood.** The fixture is the shortcut that would have missed every one of the six: the two oversized generated artifacts that exposed the false count existed only in the real tree. **And "the command did not crash" is not an observation** — the output has to be read, and quoted rather than summarised as "works". A surface that genuinely cannot run here (a deploy, a remote service) has its limitation named, never worked around in silence. Keep the run read-only or reversible.
|
|
118
|
-
14. **Dispose of what you found** (ALWAYS). A cycle surfaces defects that are not this ticket: an incoherent skill, a stale doc, a contract that lies. Do not file them on their merits. Compare each against the unit you are building, judged against the program objective: it either blocks this unit and is fixed here, or it beats this unit and becomes the next one, or it is **dropped**.
|
|
135
|
+
14. **Dispose of what you found** (ALWAYS). A cycle surfaces defects that are not this ticket: an incoherent skill, a stale doc, a contract that lies. Do not file them on their merits. Compare each against the unit you are building, judged against the program objective: it either blocks this unit and is fixed here, or it beats this unit and becomes the next one, or it is **dropped**. Report only findings that affect delivery, a human decision or unreconstructable evidence; do not produce a dropped-findings ledger. Record only evidence that cannot be reconstructed — a failure seen once, a measurement — with the command that replays it. The admission rules are `void-ticket`'s; this pass is where they fire.
|
|
119
136
|
15. **Ship** (ALWAYS). Compose `void-commit-discipline`, reuse the existing PR for the branch (create one only if absent), attach verification evidence, and mark the same pull request ready when the candidate meets the review handoff requirements. Then move a tracker-backed ticket to **In Review**. Move it to **Done** only after merge and final verification of the merged state. Commits are **bisectable** — one logical change each, dependency-ordered (infra → domain + tests → edge/UI + tests), each independently valid. Under `void-autopilot` the worker is commit-only: it returns the commit and proof references to the coordinator, who owns pushes, PR creation/readiness and tracker updates. The worker never enables auto-merge, merges, posts the review status or moves the ticket to Done; the loop's reviewer performs the independent review of step 11 on the PR head SHA.
|
|
120
137
|
|
|
121
138
|
---
|
|
@@ -135,6 +152,28 @@ Never place secrets, full prompts, full model responses, or private source in tr
|
|
|
135
152
|
|
|
136
153
|
---
|
|
137
154
|
|
|
155
|
+
## Primary domain advice
|
|
156
|
+
|
|
157
|
+
Select the smallest useful expertise from the actual changed contract, not every touched filename.
|
|
158
|
+
|
|
159
|
+
| Main change | Primary specialist |
|
|
160
|
+
| --- | --- |
|
|
161
|
+
| UI interaction / rendering | `frontend-engineer`; `experience-designer` for unresolved journey design |
|
|
162
|
+
| Business invariants / domain model | `domain-architect` |
|
|
163
|
+
| Public API / integration contract | `api-integration-engineer` |
|
|
164
|
+
| Persistent schema / backfill | `data-migration-engineer` |
|
|
165
|
+
| Security / auth / tenancy | `security-engineer` |
|
|
166
|
+
| Runtime reliability / async operations | `observability-sre-engineer` |
|
|
167
|
+
| Measured performance bottleneck | `performance-engineer` |
|
|
168
|
+
| CLI / SDK / developer workflow | `devex-docs-engineer` |
|
|
169
|
+
| Cross-module structure | `solution-architect` |
|
|
170
|
+
|
|
171
|
+
If several domains change, the primary covers the dominant contract and requests only missing
|
|
172
|
+
expertise for a distinct risk. Record the selection and actual result in existing task evidence.
|
|
173
|
+
If the required capability is unavailable, state that limit and its delivery consequence; never
|
|
174
|
+
invent consultation or start another preparation loop. Runtime-native advice is sufficient;
|
|
175
|
+
creating an extra mission ledger solely to count the consultation is not required.
|
|
176
|
+
|
|
138
177
|
## Triage: what "fast" means
|
|
139
178
|
|
|
140
179
|
Evaluate every predicate against the actual change. Never let an upstream declaration suppress a pass whose predicate is true.
|
|
@@ -145,11 +184,12 @@ Evaluate every predicate against the actual change. Never let an upstream declar
|
|
|
145
184
|
| Architecture | structure / boundary / data model / public type | yes |
|
|
146
185
|
| Source grounding | always (official docs if third-party, project contracts if internal) | no (source varies) |
|
|
147
186
|
| Migration safety | DB schema change or migration | yes |
|
|
148
|
-
|
|
|
187
|
+
| Domain advice | behavior, coding contract or implementation structure changes | yes |
|
|
188
|
+
| TDD implementation | new or changed behavior; preserve existing proof for mechanical work | no when applicable |
|
|
149
189
|
| Async + idempotency | email / external side effect / job / single-use token | yes |
|
|
150
|
-
| End-to-end tests |
|
|
151
|
-
| UX/UI | UI
|
|
152
|
-
| Security |
|
|
190
|
+
| End-to-end tests | changed journey needs integration proof | yes |
|
|
191
|
+
| UX/UI | affected UI contract; full audit only for a material journey change | yes |
|
|
192
|
+
| Security | inspect every change; focused analysis of changed trust boundaries | no (scope varies) |
|
|
153
193
|
| Review | always | no |
|
|
154
194
|
| Verification | always | no |
|
|
155
195
|
| Dogfood | CLI command / hook / executable skill / output a person reads | yes |
|
|
@@ -166,7 +206,7 @@ Evaluate every predicate against the actual change. Never let an upstream declar
|
|
|
166
206
|
| "One-line change, skip the review" | Review is ALWAYS. One-liners ship the worst regressions. |
|
|
167
207
|
| "No UI here, skip security" | Security quick-scan is ALWAYS; a backend input is a bigger injection surface than a button. |
|
|
168
208
|
| "Tests after, ship now, it works" | TDD is ALWAYS. Tests written after green prove nothing about intent. |
|
|
169
|
-
| "It hits a trust boundary but it is internal" | Internal still
|
|
209
|
+
| "It hits a trust boundary but it is internal" | Internal trust boundaries still need focused security analysis. Tenancy leaks are internal. |
|
|
170
210
|
| "Going fast means skipping E2E" | Fast skips passes whose PREDICATE is false, not the ones that fired. |
|
|
171
211
|
| "The ticket looked complete, skip the gate" | The gate is one read. A missing edge case found now is hours saved later. |
|
|
172
212
|
| "It works, I'll clean it up after" / "I'll mock that field to unblock the test" | That IS the patch, and it sits at the wrong level. The test going green is not the evidence — refactor the approach, do not paper over it. |
|
|
@@ -179,14 +219,11 @@ Violating the letter of the triage is violating its spirit: the predicate decide
|
|
|
179
219
|
|
|
180
220
|
---
|
|
181
221
|
|
|
182
|
-
##
|
|
183
|
-
|
|
184
|
-
Tokens follow stakes: mechanical work runs cheap, judgment runs at full strength. This never cheapens a judgment pass — the predicate that fires a pass also sets its tier.
|
|
222
|
+
## Native model choice
|
|
185
223
|
|
|
186
|
-
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
- **Interactive vs worker**: run interactively, the cycle uses the session model (the human's choice); the tiering above is realized when the cycle runs as a `void-autopilot` **worker**, where the worker's model is set from the ticket's stakes (`workerTier`, top-tier by default). A light ticket's whole cycle runs cheaper; a high-stakes one stays full-strength.
|
|
224
|
+
`void-orchestrate` owns model selection from the task's risk, explicit user choice and actual
|
|
225
|
+
native controls. Use that policy for specialists and writers; keep the assigned writer's full
|
|
226
|
+
quality cycle. This workflow adds no model names, worker-tier field or second selection rule.
|
|
190
227
|
|
|
191
228
|
## Composition
|
|
192
229
|
|
|
@@ -7,6 +7,9 @@ description: Sonnet default (Opus needs comment), prompt caching for >1024-token
|
|
|
7
7
|
|
|
8
8
|
LLM costs scale with usage. A 1k-token system prompt re-billed on every call is 90% waste with caching. Opus everywhere is 5× Sonnet for marginal gains. Unbounded retries on a refusal burn tokens. This skill makes cost a first-class design concern at every LLM call site.
|
|
9
9
|
|
|
10
|
+
This skill governs application LLM API call sites, not coding-agent runtime selection;
|
|
11
|
+
`void-orchestrate` owns native agent model choices.
|
|
12
|
+
|
|
10
13
|
**Attribution**: see `.source`. Composed with the `claude-api` skill (SDK mechanics). Foundation: Anthropic prompt caching docs + batch API + model card pricing.
|
|
11
14
|
|
|
12
15
|
---
|
|
@@ -40,6 +40,36 @@ or act on an unrelated project. Native work independent of that action may conti
|
|
|
40
40
|
mandatory independent review or required isolation remains a blocker; do not
|
|
41
41
|
replace it with self-review or silently weaken its requirement.
|
|
42
42
|
|
|
43
|
+
## Native model choice
|
|
44
|
+
|
|
45
|
+
Use the current runtime's declared model/effort controls and project-configured identifiers.
|
|
46
|
+
An explicit user choice wins; do not infer availability, price or capability from a product name.
|
|
47
|
+
Without an explicit choice, match the bounded task to an available native configuration:
|
|
48
|
+
|
|
49
|
+
| Work | Selection |
|
|
50
|
+
| --- | --- |
|
|
51
|
+
| Mechanical lookup, extraction, formatting | An economical model when supported and sufficient |
|
|
52
|
+
| Domain advice or implementation | Enough capability for the actual contract and uncertainty |
|
|
53
|
+
| Sensitive architecture/security, independent review, failed-proof adjudication | Retain judgment capability; never downgrade just for cost |
|
|
54
|
+
|
|
55
|
+
Keep the assigned writer and reuse valid specialist advice. Do not restart a retained context
|
|
56
|
+
merely to change its model; the writer's whole quality cycle stays intact. A cheaper explicit
|
|
57
|
+
choice never waives acceptance or independent review: report insufficient capability as a
|
|
58
|
+
conflict, rather than silently upgrading or claiming the quality requirement is met.
|
|
59
|
+
|
|
60
|
+
- Discover supported identifiers and controls before dispatch; pass only supported options.
|
|
61
|
+
Respect native constraints between model overrides, effort and context/fork modes.
|
|
62
|
+
- An unavailable explicit choice stops the dependent launch with its cause and next action.
|
|
63
|
+
If no explicit choice exists and selection is unsupported, inherit/default transparently;
|
|
64
|
+
do not claim that a particular model or lower price was selected.
|
|
65
|
+
- Diagnose an unsupported optional setting instead of passing it anyway. Do not silently
|
|
66
|
+
change provider, credentials, permissions or the user's choice to make a launch work.
|
|
67
|
+
- Reconcile an uncertain launch before retrying the same work. At most one retry for a
|
|
68
|
+
confirmed transient failure; otherwise report the limitation. Never cascade across models.
|
|
69
|
+
- Requested and observed models differ: retain the requested option in the ordinary brief,
|
|
70
|
+
and report the effective model only when the runtime supplies it; otherwise it is unknown.
|
|
71
|
+
Use existing evidence/reporting, not a new registry. Report cost/time only when observed.
|
|
72
|
+
|
|
43
73
|
## First ticket and optional worker tabs
|
|
44
74
|
|
|
45
75
|
SessionStart discovers Herdr even before central mission files exist. Its advice
|
|
@@ -97,6 +127,18 @@ Never invent a durable inbox. Preserve formal receipts separately from working n
|
|
|
97
127
|
|
|
98
128
|
## Short native specialists
|
|
99
129
|
|
|
130
|
+
`void-implement` owns domain detection and the required primary domain consultation before coding.
|
|
131
|
+
Dispatch that smallest relevant expert set once, collect actual advice and reuse it while its
|
|
132
|
+
inputs hold. This skill owns transport and provenance, not a second applicability policy or
|
|
133
|
+
an all-specialist preparation quorum. Extra experts need a distinct uncovered risk.
|
|
134
|
+
|
|
135
|
+
For a lightweight consultation outside formal dispatch, after the native call actually succeeds
|
|
136
|
+
and returns a context ID, the coordinator may record `void-machine mission advisory-start --id
|
|
137
|
+
<mission> --specialist core:<role> --runtime claude|codex --context <actual-native-context>`.
|
|
138
|
+
This is a coordinator-observed usage receipt, not `specialist-event`, completion or review proof.
|
|
139
|
+
Never record a planned/failed start, reconstruct past receipts, or block delivery on missing
|
|
140
|
+
telemetry. Repeated submission of the same context is idempotent; a different role conflicts.
|
|
141
|
+
|
|
100
142
|
Pass the returned specialist envelope unchanged: runtime, agentName, missionId,
|
|
101
143
|
contextPack and, when present, reviewSubject and reviewScope. Invoke the runtime's
|
|
102
144
|
native fresh-context primitive; native Agent calls are not intercepted. Keep the
|
|
@@ -20,11 +20,11 @@ do not independently approve plans or start implementation.
|
|
|
20
20
|
|
|
21
21
|
## When to invoke
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
Use when approved work has dependencies, several units or continuity needs worth recording. A bounded request with clear acceptance criteria can go directly to `void-implement`; a plan is not required merely because code will change.
|
|
24
24
|
|
|
25
25
|
**A `source: forge` spec is a ready spec.** When `docs/specs/YYYY-MM-DD-<slug>.md` carries `source: forge` in its frontmatter (the forge→harness artifact contract), consume it **directly** — it already holds the 18 recon variables, the winning design, and the critique verdict, so `void-brainstorm` need not have run. Plan from it as-is; if it is partial (missing critique, or a field absent in an older `forge_version`), plan around the holes and flag them as the first open decisions rather than re-deriving the whole thing.
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
Use the approved spec or explicit user request as the source. If a material design choice is missing, resolve that choice with `void-brainstorm`; do not restart settled discovery.
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
@@ -64,9 +64,7 @@ Each implementation step has this shape:
|
|
|
64
64
|
- **Depends on**: [step-3, step-5] (or "none")
|
|
65
65
|
- **TDD mode**: strict | souple | exploratory
|
|
66
66
|
- **Verification gate**: <what must pass before moving to step N+1>
|
|
67
|
-
- **Expected commits
|
|
68
|
-
- `test: <reproducing or new behavior>`
|
|
69
|
-
- `feat: <implementation>` (or `fix:` / `refactor:` per `void-commit-discipline`)
|
|
67
|
+
- **Expected change**: one logical, bisectable commit or dependency-ordered commits; RED/GREEN evidence is retained independently of commit boundaries
|
|
70
68
|
- **Notes**: <constraints, gotchas, hook implications>
|
|
71
69
|
```
|
|
72
70
|
|
|
@@ -86,7 +84,7 @@ Each step's gate states which checks must pass before moving on. Examples:
|
|
|
86
84
|
|
|
87
85
|
- `tsc --noEmit && vitest run --filter checkoutCart`
|
|
88
86
|
- `pre-commit hooks dry-run on staged set` (composes with `tdd-guard`, `tigerstyle-check`, `no-any-grep`, etc.)
|
|
89
|
-
-
|
|
87
|
+
- the configured mutation threshold, when the project has a mutation runner
|
|
90
88
|
|
|
91
89
|
The gate is observable. The user sees the output before the next step begins.
|
|
92
90
|
|
|
@@ -165,7 +163,7 @@ After writing the plan, scan for:
|
|
|
165
163
|
3. **Missing TDD mode** — every implementation step declares one? Fix.
|
|
166
164
|
4. **Unrealistic dependencies** — does step N actually need step N-1, or could they parallelize?
|
|
167
165
|
5. **Missing execution handoff** — a standalone plan has a correct resume point; a tracker-backed program has the complete stable order/dependency table?
|
|
168
|
-
6. **
|
|
166
|
+
6. **Source of authority** — links to the approved spec when present, otherwise records the explicit request?
|
|
169
167
|
7. **Executability gate** (vendored from gstack `/spec`) — could an *unfamiliar* implementer or agent execute this plan with **zero follow-up questions**? Walk one step as if you'd never seen the codebase: is every file named, every metric quantified, every acceptance criterion observable? Any "figure it out at implementation time" is an ambiguity to resolve now.
|
|
170
168
|
|
|
171
169
|
Fix inline. Then user-review gate.
|
|
@@ -174,12 +172,9 @@ Fix inline. Then user-review gate.
|
|
|
174
172
|
|
|
175
173
|
## User-review gate
|
|
176
174
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
Wait for response. If changes requested, make them and re-run self-review.
|
|
182
|
-
|
|
175
|
+
For already authorized scope, do not request approval again for the plan's formatting or routine
|
|
176
|
+
sequencing. Link the plan and proceed. Ask only for a new consequential choice, expanded scope
|
|
177
|
+
or declared human gate; continue independent authorized work while it is unresolved.
|
|
183
178
|
---
|
|
184
179
|
|
|
185
180
|
## Transition to execution
|
|
@@ -213,7 +208,7 @@ Set `high_risk: true` when the plan touches:
|
|
|
213
208
|
|
|
214
209
|
## Composition with other skills
|
|
215
210
|
|
|
216
|
-
- **Upstream
|
|
211
|
+
- **Upstream**: the approved `void-brainstorm` spec or explicit complete user request supplies scope.
|
|
217
212
|
- **Downstream — `void-ticket`**: converts a multi-ticket plan into native tracker items and installs its active handoff.
|
|
218
213
|
- **Downstream — `void-implement`**: executes one complete ticket and maintains its tracker lifecycle.
|
|
219
214
|
- **With `void-autopilot`**: drains independent ready tickets only through its attended flow.
|
|
@@ -227,11 +222,11 @@ Set `high_risk: true` when the plan touches:
|
|
|
227
222
|
|
|
228
223
|
## Anti-rules
|
|
229
224
|
|
|
230
|
-
- MUST NOT
|
|
225
|
+
- MUST NOT invent scope beyond the approved spec or explicit request.
|
|
231
226
|
- MUST NOT skip TDD mode declaration per implementation step.
|
|
232
227
|
- MUST NOT skip verification gates per step.
|
|
233
228
|
- MUST NOT omit the applicable execution handoff: resume point for standalone work, tracker table for a multi-ticket program.
|
|
234
|
-
- MUST NOT
|
|
229
|
+
- MUST NOT omit the source of authority: link the spec when present, otherwise record the explicit request.
|
|
235
230
|
- MUST NOT execute the plan (downstream skills do that).
|
|
236
231
|
|
|
237
232
|
---
|
|
@@ -239,7 +234,7 @@ Set `high_risk: true` when the plan touches:
|
|
|
239
234
|
## Final rule
|
|
240
235
|
|
|
241
236
|
```
|
|
242
|
-
Approved
|
|
237
|
+
Approved scope → useful sequence → self-review → resolve only new decisions → ticket or implement.
|
|
243
238
|
Otherwise → it is not voidcorp plan.
|
|
244
239
|
```
|
|
245
240
|
|
|
@@ -5,7 +5,7 @@ description: "Live browser QA of a running web app via the claude-in-chrome MCP:
|
|
|
5
5
|
|
|
6
6
|
# qa — voidcorp craftsman edition
|
|
7
7
|
|
|
8
|
-
You are a QA engineer AND a bug-fix engineer. Test a running web app like a real user
|
|
8
|
+
You are a QA engineer AND a bug-fix engineer. Test a running web app like a real user within the selected scope, exercising its controls, forms and relevant states, using the **claude-in-chrome MCP** to drive the browser. When you find a bug, fix it in source with an atomic commit, then re-verify. Produce a structured report with before/after evidence.
|
|
9
9
|
|
|
10
10
|
This tests the *shipped, running app* through a real browser. It is not unit/E2E authoring (`void-tdd` + `void-testing` own that), and it does not judge visual craft from code (`void-ui-review` owns that — this skill composes it for the live visual pass).
|
|
11
11
|
|
|
@@ -52,10 +52,10 @@ Command mapping from the old gstack browse (`$B`) to the MCP:
|
|
|
52
52
|
|
|
53
53
|
## Modes
|
|
54
54
|
|
|
55
|
-
- **Diff-aware** (default
|
|
56
|
-
- **Full** (
|
|
55
|
+
- **Diff-aware** (default for change verification, including when its URL is supplied) — read the diff, map the changed contract to affected pages, controls, states and viewports. Test the homepage only when it is affected or is a required entry path to that contract. Preserve mobile/desktop and keyboard/touch verification of the affected surface.
|
|
56
|
+
- **Full** (explicitly requested audit) — systematic exploration across the requested site scope, evidence-backed issues and health score. A URL alone identifies the target; it does not select a full audit.
|
|
57
57
|
- **Quick** (`--quick`) — 30-second smoke: homepage + top 5 nav targets, load + console + broken links only.
|
|
58
|
-
- **Regression** (`--regression <baseline.json>`) — run
|
|
58
|
+
- **Regression** (`--regression <baseline.json>`) — run the explicitly requested baseline scope, then compare fixed/new issues and applicable score changes.
|
|
59
59
|
- **Report-only** (`--report-only`, the old `/qa-only`) — phases through Report, then STOP. No fix loop, no commits.
|
|
60
60
|
|
|
61
61
|
## Precondition: clean working tree
|
|
@@ -65,18 +65,18 @@ Each fix must be its own atomic commit, so before fixing, `git status --porcelai
|
|
|
65
65
|
## Workflow
|
|
66
66
|
|
|
67
67
|
1. **Orient** — `tabs_context_mcp`, open the target in a new tab, screenshot, read the page, check console. Detect the framework (Next.js `__next` / `_next/data`; Rails `csrf-token`; SPA = client routing) and note it. For an SPA, map nav from `read_page` (client routes, not raw links).
|
|
68
|
-
2. **Explore** — visit pages
|
|
68
|
+
2. **Explore** — visit only the selected mode's pages and affected states. Per page: visual scan of the screenshot; click interactive elements; fill + submit forms (empty, invalid, edge, overflow); walk navigation in and out; exercise **the states a user actually hits — empty, loading, error, overflow**; check console after every interaction; for responsive, `resize_window` then **verify the screenshot dimensions actually changed** — on some setups it resizes the window without re-rendering to a true mobile viewport, so confirm before trusting a "mobile" shot (else note responsive as unverified). Depth over breadth: more time on core flows (auth, checkout, search), less on static pages.
|
|
69
69
|
3. **Document** — write each issue the moment you find it, never batch. Two evidence tiers: an **interactive** bug gets a before-screenshot, the action, an after-screenshot (a `gif_creator` repro for a flow); a **static** bug gets one annotated screenshot. Verify a bug reproduces once before writing it. For a UI quality pass, capture mobile and desktop for every applicable state and bind each capture to the current diff hash; a later CSS/UI diff makes it stale. Redact credentials (`[REDACTED]`). Surface every screenshot to the user (Read the file) — otherwise it is invisible.
|
|
70
|
-
4. **Health score** — per-category 0-100 (Console, Links, Visual, Functional, UX, Performance, Content, Accessibility) minus severity deductions (critical -25 / high -15 / medium -8 / low -3), weighted average. Record it as the baseline.
|
|
71
|
-
5. **Visual pass**
|
|
72
|
-
6. **Triage** —
|
|
73
|
-
7. **Fix loop** (skipped in report-only) —
|
|
74
|
-
8. **Self-regulation** — every 5 fixes or after any revert, stop and evaluate: reverts, fixes touching many files, all-low-severity remaining, and unrelated-file edits all raise the "this is going wrong" signal. Above the threshold, or past a hard cap of ~50 fixes, STOP and show the user before continuing.
|
|
75
|
-
9. **Report** —
|
|
70
|
+
4. **Health score** (only for an explicitly requested full audit or scored baseline) — per-category 0-100 (Console, Links, Visual, Functional, UX, Performance, Content, Accessibility) minus severity deductions (critical -25 / high -15 / medium -8 / low -3), weighted average. Record it as the baseline.
|
|
71
|
+
5. **Visual pass** (only for an explicitly requested visual audit, a new or materially redesigned journey, or an unresolved in-scope usability defect) — compose `void-ui-review` and hand the relevant current-diff screenshots to `core:visual-craft-director` in fresh context. Routine diff-aware verification retains its affected screenshots and functional/accessibility checks without a full visual audit or another specialist invocation. This skill drives the browser; `void-ui-review` supplies the craft bar; the specialist owns the independent verdict. If the browser or required captures are unavailable, report the UI pass blocked rather than certifying from prose.
|
|
72
|
+
6. **Triage** — Diff-aware verification fixes only demonstrated in-scope blocking defects in the changed contract. Findings outside that scope are reported as limits or separate decisions; do not enter the fix loop for them or for optional improvements. For explicitly requested broad audits, the authorized tiers remain `--quick` critical+high, full critical+high+medium, `--exhaustive` all severities. Severity alone never expands the authorized scope. Mark unfixable-from-source issues as deferred.
|
|
73
|
+
7. **Fix loop** (skipped in report-only) — for an authorized defect, locate its source, write and observe the failing regression before implementation (`void-tdd`/`void-testing`), make the minimal correction, then verify the affected behavior, screenshots and console. Commit the logical fix `fix(qa): <issue>` with its cause and actual proof. Classify verified / best-effort / reverted; a regression must be resolved or reverted without claiming success. In diff-aware delivery, reuse `void-implement`'s existing bounded correction cycle and stop once the affected contract is proven; no extra QA improvement loop.
|
|
74
|
+
8. **Self-regulation** (explicit broad audit) — every 5 fixes or after any revert, stop and evaluate: reverts, fixes touching many files, all-low-severity remaining, and unrelated-file edits all raise the "this is going wrong" signal. Above the threshold, or past a hard cap of ~50 fixes, STOP and show the user before continuing.
|
|
75
|
+
9. **Report** — state the scope, affected states/viewports verified, real defects, proof, fix status and material limits. Include a health-score delta only when that mode requested a score. A local change needs no whole-site score or unrelated N/A rows. Write under the project's report location, not `~/.gstack`.
|
|
76
76
|
|
|
77
77
|
## Composition & boundaries
|
|
78
78
|
|
|
79
|
-
- **With `void-ui-review`** — this skill owns driving the browser and the functional/fix loop; `void-ui-review` owns the visual-craft judgment
|
|
79
|
+
- **With `void-ui-review`** — this skill owns driving the browser and the functional/fix loop; `void-ui-review` owns the visual-craft judgment when step 5 applies; local diff-aware verification does not automatically invoke a full audit. No restated design rules here.
|
|
80
80
|
- **With `void-tdd` / `void-testing`** — the regression test in the fix loop is authored per their discipline. This skill finds bugs in a running app; they own how the test that locks the fix is written.
|
|
81
81
|
- **Not `void-devex-audit`** — that audits a developer-facing surface (API/CLI/SDK/docs journey, TTHW); this QAs an end-user web app in a browser. Different surface.
|
|
82
82
|
- **Not E2E authoring** — Playwright suites are `void-testing`'s output; this is exploratory human-style QA of the deployed thing.
|
|
@@ -95,8 +95,9 @@ Each fix must be its own atomic commit, so before fixing, `git status --porcelai
|
|
|
95
95
|
## Final rule
|
|
96
96
|
|
|
97
97
|
```
|
|
98
|
-
Running app →
|
|
99
|
-
evidence →
|
|
98
|
+
Running app → select authorized scope → load browser → verify affected states/viewports →
|
|
99
|
+
record evidence → fix only in-scope defects with RED/GREEN → stop when proven → report.
|
|
100
|
+
Scoring and broad visual exploration apply only to the modes that request them.
|
|
100
101
|
Report-only stops before the fix loop. Otherwise → it is not voidcorp qa.
|
|
101
102
|
```
|
|
102
103
|
|