← ClaudeAtlas

test-migrationlisted

Phase 3 of the test-readiness pipeline. Reconciles existing tests against the Phase 1 inventory and Phase 2 blueprint, bucketing each existing test and each inventory item into reuse / promote / rebuild / trim (redundant assertions) / net-new. Same bucketing applies to test infrastructure. Enforces the canonical-layer rule — a test whose assertions are already owned by a lower-layer test gets redundant assertions trimmed, not the test deleted. Writes `docs/test-readiness/test-migration.md`. Invoke when the `/test-migration` command runs.
app-vitals/shipwright · ★ 6 · Code & Development · score 71
Install: claude install-skill app-vitals/shipwright
# test-migration skill ## Purpose Reconcile reality against the blueprint. Bucket every existing test and every inventory item. ## When invoked By the `/test-migration` command. Requires both prior artifacts: - `docs/test-readiness/test-inventory.md` (Phase 1) - `docs/test-readiness/test-system.md` (Phase 2) ## The five buckets ### 1. Reuse as-is ALL of: - Right layer (matches inventory's canonical layer for that functionality) - Right framework (matches Phase 2 blueprint) - Adequate depth (asserts behavior, not just syntax) - Runs locally with no external network call - Canary-eligible if required (smoke/E2E + critical/high tier + read-only/self-cleaning) - Within speed budget for its layer - Is the **canonical owner** of its functionality (no lower-layer test already proves the same property) ### 2. Promote / deepen Right shape, fixable gap: - Right layer, right framework, but shallow assertions or missing edge cases - Missing canary mode (needs `TEST_TARGET_URL` env var plumbing) - Marginally over speed budget but fixable via fixture-level setup, parallelization tuning, or removing redundant beforeEach work ### 3. Rebuild Wrong fundamentals: - Wrong layer (e.g., mocked integration where the inventory says real-DB integration is required) - Wrong framework (Phase 2 recommends a different runner and the migration cost is justified) - Requires non-local external service with no available substitute - So slow it cannot be made budget-compliant at its current layer —