voidmachine 5.0.7 → 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.
@@ -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:** Speed comes from skipping ceremony on trivial work, never from skipping a pass whose trigger fired. The triage is keyed to observable predicates (does it touch a boundary, a UI, a trust edge), not to a feeling that the change "looks simple."
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. Consult a targeted native
41
- specialist only when a concrete risk or unresolved question warrants advice (pass 5).
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). Fetch the complete ticket, including native relations: scope, AC, DoD, edge cases, declared passes, blockers. If `.void/program.md` scopes the unit, also read its global plan and spec. Confirm the unit is ready and nothing is missing or ambiguous. If a gap or uncovered angle exists, loop back to `void-ticket` to complete it before coding, do not paper over it. For a provider-backed unit, move it to the declared started state and assign it to the current maintainer before the first implementation edit. Load or compile the canonical mission plan and verify its hash before any specialist invocation; missing or conflicting plan data is degraded, not guessed.
102
- 2. **Architecture pass** (IF it touches structure, a module boundary, the data model, or public types). Compose `void-hexagonal-architecture`, `void-domain-driven-design`, agents `type-design-analyzer` + `doctrine-critic`. Confirm the applicable ADR is honored.
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 concrete risk or unresolved question warrants a specialist). Use the existing professional passes and `void-orchestrate` to consult only the relevant native specialist. Bind the question to the actual brief, cited artifacts, boundary or risk being examined; revisit only the affected advice when those materially change. Baseline/profile applicability alone does not require a panel, and advice is not an automatic canonical gate. With `panel.provider: orchestrator`, consume its supplied advice without launching a duplicate. For canonical `invoke-specialists` actions, preserve runtime, agentName, missionId, contextPack, reviewSubject and reviewScope; record actual starts/results, never invented receipts. Reconcile uncertain invocations before launching, keep at most four simultaneous agents, and never fail one on a wait timeout. Preserve real unresolved findings and author-owned evidence obligations. Already-started preparation may finish as advice after writer admission; it cannot satisfy final code review or authorize a new preparation invocation after implementation starts.
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 it touches a user-facing flow). Write/extend the E2E suite (Playwright). The path a user actually walks, not just the unit.
109
- 9. **UX/UI pass** (IF it touches a UI surface). The interface is held to production craft, not just "it renders". Compose `void-frontend-design` (build-time craft) + `void-ui-review` (the audit/critique ceiling: AI-slop test, squint test, interaction-state coverage, technical audit) + `void-accessibility`, across the baseline (BACK+FRONT parity, mobile and desktop, and the states a user actually hits — loading / error / empty). Browser-verified QA (live screenshots) runs via `void-qa` (the claude-in-chrome MCP). A UI ticket is not shippable until this pass is **verified, not assumed**.
110
- 10. **Security pass** (ALWAYS a quick scan; DEEP if it touches a trust boundary: external input, auth, RLS/tenancy, untrusted content, secrets, or a side-effecting action). Compose `void-security-guidance` + `void-security-audit`.
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`: typecheck, tests, hooks, both viewports, all observed not assumed. **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.
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**. Write one recap line per finding naming what it lost to. 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.
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
- | TDD implementation | always | no |
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 | user-facing flow touched | yes |
151
- | UX/UI | UI surface touched | yes |
152
- | Security | always (deep if trust boundary) | no (depth varies) |
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 gets the DEEP security pass. Tenancy leaks are internal. |
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
- ## Model tier by pass (frugality, no quality loss)
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
- - **Mechanical (may run a cheaper model)**: the ingest read, artifact/mirror regeneration, a trivial edit whose predicate fired nothing else.
187
- - **Judgment (stay top-tier)**: architecture, DEEP security, the review adversarial pass, verification adjudication of a red suite, and any brainstorm/design step.
188
- - **Subagents carry their own tier**: `doctrine-critic` / `silent-failure-hunter` / `code-explorer` run sonnet; `type-design-analyzer` runs sonnet, `migration-planner` opus (see the agent frontmatter). This skill composes them; it does not override their tier.
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
- Invoke immediately after `void-brainstorm` approves a spec. The plan is the next deliverable before any code.
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
- Do NOT invoke without an approved spec. If you find yourself wanting to plan without a spec, that means brainstorm was skipped — go back.
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
- - `mutation testing score ≥ 90%` (strict mode steps with critical surface)
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. **Frontmatter `spec:`** — links back to the approved spec?
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
- Ask the user to review the plan before execution begins:
178
-
179
- > "Plan written and committed to `docs/plans/<file>.md`. Please review and let me know if you want changes before we start executing."
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 — `void-brainstorm`**: the approved spec is the input.
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 plan without an approved spec.
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 skip the spec link in frontmatter.
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 spec → plan written → self-review → user approves → ticket or implement.
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 — click everything, fill every form, check every state — 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.
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 on a feature branch with no URL) — read the branch diff, map changed files to affected pages/routes, detect the local dev server, test only those pages plus a homepage smoke. The common case.
56
- - **Full** (a URL is given) — systematic exploration of every reachable page; 5-10 well-evidenced issues; health score.
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 full, then diff against a prior baseline: fixed vs new vs score delta.
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 systematically. 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.
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** — for visual/interaction judgment on the live screenshots, compose `void-ui-review`, then hand the current-diff evidence to `core:visual-craft-director` in fresh context. 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** — sort by severity; fix per tier: `--quick` critical+high · standard (default) +medium · `--exhaustive` +low. Mark unfixable-from-source (third-party, infra) as deferred.
73
- 7. **Fix loop** (skipped in report-only) — per issue in severity order: locate source (grep/glob — only now do you read code); make the **minimal** fix (no refactor, no scope creep); commit one fix `fix(qa): <issue> — <desc>`; re-test the page with a before/after pair + console + a regression test that reproduces the bug (compose `void-tdd`/`void-testing` — assert behavior, not "it renders"); classify **verified / best-effort / reverted** (`git revert` on a regression → defer).
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** — issues with severity + evidence + fix status (verified/best-effort/reverted/deferred) + commit SHA; health-score delta baseline → final; a one-line PR summary ("QA found N, fixed M, health X → Y"). If the final score is worse than baseline, warn prominently. Write it under the project's report location, not `~/.gstack`.
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 applied to the live screenshots (step 5). No restated design rules here.
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 → load claude-in-chrome (tabs_context first) → orient → explore every state → document with
99
- evidence → score → triage → atomic fix + regression test + re-verify → self-regulate → report.
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