v5 to v6

9 added, 42 removed. Audit A to A.

---
name: mock-to-internals-migration
description: mock-to-internals-migration
triggers:
- - opt-in tool map
- - feature flag gating
- - tool registration
- generated_from_knowledge:
- - 15870ee2-0813-406f-afd6-f34a05343584
- - c3bbb12e-f8de-429d-9d3a-983e7929786c
- - ece661ed-3626-4e1d-b95b-b6ab96a059e9
- - 4d22c8a2-335b-46bd-91da-7968306c6107
- - a152c109-c6f1-4338-8e18-1b98d2d358cf
- - 1baf97e1-b58e-4287-acdd-7b8c150b0e6b
- - 939330c8-be3d-4c11-842f-4a93433b7d1a
- - c66e7212-82ca-4b03-ad06-fece8199e401
- - 2041997b-c527-4cc0-bcf1-08f0cfd6777f
- - d07cf04b-05c2-4e80-b291-e2d0446d9d09
- source_knowledge_ids:
- - 15870ee2-0813-406f-afd6-f34a05343584
- - c3bbb12e-f8de-429d-9d3a-983e7929786c
- - ece661ed-3626-4e1d-b95b-b6ab96a059e9
- - 4d22c8a2-335b-46bd-91da-7968306c6107
- - a152c109-c6f1-4338-8e18-1b98d2d358cf
- - 1baf97e1-b58e-4287-acdd-7b8c150b0e6b
- - 939330c8-be3d-4c11-842f-4a93433b7d1a
- - c66e7212-82ca-4b03-ad06-fece8199e401
- - 2041997b-c527-4cc0-bcf1-08f0cfd6777f
- - d07cf04b-05c2-4e80-b291-e2d0446d9d09
+ - vitest to bun mock
+ - mock-to-internals
+ - _internals seam
+ generated_from_knowledge: []
+ source_knowledge_ids: []
generated_at: 2026-07-02T02:35:49.991Z
confidence: 0.60
status: active
- version: 5
+ version: 6
skill_origin: generated
---
<!-- generated by opencode-swarm skill-generator. Do not edit by hand; edits will be preserved on regeneration only with controlled update mode. -->
# mock-to-internals-migration
## Trigger
- - opt-in tool map
- - feature flag gating
- - tool registration
+ - vitest to bun mock
+ - mock-to-internals
+ - _internals seam
## Required Procedure
- mirror existing opt-in pattern: separate tool map constant, conditional merge in agents/index.ts, gating tests verifying disabled and enabled states
- run barrel-import-dependent tests after modifying barrel exports
- audit code structure integrity before editing a file that was recently refactored or extracted
- grep for all vi.fn(), vi.spyOn(), vi.mock() in converted files before declaring conversion complete
- spread real module exports as base of every mock.module return object
- Load .opencode/skills/writing-tests/SKILL.md before touching any test file
- run lint check (e.g. bun run lint or equivalent) as part of pre-submit verification, not just build
- check for existing wrapper patterns before applying sandbox wrapping
- design command-transformation pipelines as idempotent passes, not stacking layers
- run tests on the unmodified codebase before starting to establish a failure baseline
## Forbidden Shortcuts
- invent new tool-gating mechanisms for opt-in feature flags
- label post-change test failures as 'pre-existing' without running tests before the change
## Delegation Template
When delegating a task affected by this skill, include:
```
SKILLS: file:.opencode/skills/generated/mock-to-internals-migration/SKILL.md
```
## Reviewer Checks
- grep for import-from-barrel patterns in test files and run affected tests after barrel changes
- grep for mock.module patterns that lack ...realModule spread
- grep for mock.module calls to confirm they spread real exports
- confirm bun:test isolation patterns match skill guidelines
- verify wrapCommand idempotency by calling it twice on the same command and confirming output equals single-call output
- Run `git diff <base>..<head> --name-only` and confirm file presence before marking introduced_by_pr: YES or NO
## Test Engineer Checks
- Add or update tests covering the trigger condition and the forbidden shortcut.
-
- ## Source Knowledge IDs
-
- - 15870ee2-0813-406f-afd6-f34a05343584 — Pre-existing opt-in maps (memory, external_skills, skills) follow a consistent pattern — when implementing new gates, mirror the existing structure (separate SKILL_AGENT_TOOL_MAP, conditional merge in agents/index.ts) rather than inventing new mechanisms.</item>
- - c3bbb12e-f8de-429d-9d3a-983e7929786c — When adding new exports to barrel files (e.g. src/tools/index.ts), verify all existing test files that import from that barrel still resolve correctly — new exports should not shadow or break existing import paths used by dependent tests.
- - ece661ed-3626-4e1d-b95b-b6ab96a059e9 — Verify baseline code structure is sound before making modifications; an incomplete refactor split leaves structure broken and causes edits to fail validation
- - 4d22c8a2-335b-46bd-91da-7968306c6107 — Partial Vitest→bun:test mock conversion causes runtime TypeErrors; when converting any test file, audit ALL mock.api usage to ensure complete migration — a single unconverted vi.fn() left next to a bun.mock() causes reset() to fail at runtime
- - a152c109-c6f1-4338-8e18-1b98d2d358cf — Always spread real module exports into mock.module returns to prevent undeclared overrides from leaking across tests and causing intermittent failures
- - 1baf97e1-b58e-4287-acdd-7b8c150b0e6b — Always load the writing-tests skill before modifying test files — SKILL_COMPLIANCE:none on a test-refactor task means the required skill was bypassed, increasing risk of mock isolation bugs and test pollution.
- - 939330c8-be3d-4c11-842f-4a93433b7d1a — Coders must run lint alongside build before submitting — a clean build does not imply a clean lint, and lint failures force revision rounds that are entirely preventable.
- - c66e7212-82ca-4b03-ad06-fece8199e401 — wrapCommand and similar command-transformation functions must be idempotent: detect and skip re-wrapping if the target executor has already applied its sandbox envelope (check for existing bwrap/sandbox-exec/Win32 wrapper patterns before wrapping again).
- - 2041997b-c527-4cc0-bcf1-08f0cfd6777f — A test failure observed after your changes cannot be classified as 'pre-existing' without a pre-change baseline run — post-hoc attribution to pre-existing failures is unreliable and masks genuine regressions
- - d07cf04b-05c2-4e80-b291-e2d0446d9d09 — When confirming a change in review, ensure the change is actually present and causally attributable to the PR; unverifiable attributions break the review gate.