| name | localstudio-finish-checks |
| description | LocalStudio project completion workflow. Use before claiming a LocalStudio/canva-webai-clone code task is done, especially after frontend, editor, Playwright, export, import, sharing, persistence, or UI workflow changes, to run the scenario E2E test, typecheck, lint, the full local test suite, and start a non-default-port dev server for user verification. |
LocalStudio Finish Checks
Overview
Use this skill at the end of a LocalStudio implementation before final handoff. It enforces a concrete verification order: scenario E2E first, typecheck and lint next, the full local test suite before handoff, then a user-verification dev server on a non-default port.
Coverage must never degrade. Every new branch, state, workflow, helper, and user-visible path added by the task needs coverage that exercises the actual feature behavior, preferably through browser-level E2E coverage when the behavior is browser-visible. Do not lower thresholds, skip specs, delete assertions, or add superficial tests to make verification pass.
Leave no dead code behind. Before handoff, remove unused helpers, abandoned branches, stale TODO scaffolding, unused exports, orphaned test fixtures, and speculative abstractions that are not exercised by the implemented feature or tests.
Workflow
-
Identify the user-facing scenario changed by the task.
- Search
tests/e2e for matching specs with rg -n "<feature keyword>" tests/e2e.
- Prefer the narrowest existing Playwright spec that exercises the changed workflow.
- If no spec exists and the task changed browser-visible behavior, add or update a targeted E2E spec before handoff.
- Map each new code path to a real verification path. New browser-visible behavior needs coverage-bearing E2E; non-UI shared logic needs focused unit coverage plus the E2E path that consumes it when practical.
- Treat coverage regressions as implementation defects. Add meaningful feature coverage or remove unneeded code until the covered surface reflects the change.
-
Run the scenario E2E test before broad checks.
-
Run typecheck.
npm run typecheck
-
Run lint.
npm run lint
-
Run the full local test suite.
- This is required even when focused tests, typecheck, and lint pass, because the goal is to catch CI-breaking regressions before handoff.
- Run:
npm test
- If
npm test fails because of unrelated pre-existing failures, report the failing workspace/spec and the first representative error, then run the narrow task-related tests again so the task-specific result is still clear.
- Do not describe the full local suite as passing unless the full
npm test command passed.
-
Check that the task did not leave uncovered or dead implementation surface.
-
Start a manual verification server on a non-default port.
Handoff Rules
- Summarize the scenario E2E command, typecheck result, lint result, full
npm test result, and server URL.
- Summarize the coverage-preservation check: which new behavior was covered, which coverage command ran if applicable, and whether any coverage command could not be run.
- State that dead-code review was done, including whether unused helpers, stale branches, or orphaned fixtures were removed or none were found.
- Mention known non-blocking warnings, such as JSDOM media API warnings, only if they appear in successful verification output.
- If any required verification fails for task-related reasons, fix it before final handoff.
- If a required verification cannot run, say why and do not imply the task is fully verified.