skills/existing-project-migration/SKILL.md
Use this skill for Customware existing-project migration tasks that move uploaded customer apps from other builders into the standard Customware stack while preserving the source product's routes, workflows, UI, UX, and styling with no intentional user-facing changes while replacing only the runtime foundation. This skill covers both `Migration build` and `Migration verify` and includes self-grading quality gates that must pass before the task can complete.
npx skillsauth add customware-ai/skills existing-project-migrationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Re-read this SKILL.md after every compaction before continuing work. Do not assume conversational memory is sufficient.
This skill is for tech stack migration, not product redesign.
template-be-setup plus the required client-only-spa merge rule.Do not treat this task like a fresh app build, a domain reinterpretation, or a chance to simplify the product into a smaller generic dashboard. Do not encode expectations from any previous migration. This skill must work for whatever app the customer uploaded. Derive the preservation target fresh from the current imported source each time. A customer familiar with the source app should feel they are using the same app on a new stack, not a remake. If literal parity is blocked by a real stack constraint, a missing source artifact, or a source bug, keep the difference minimal and record it explicitly as a named deviation.
The uploaded artifacts drive the migration.
Priority:
.import/project/ from projects.zip is the primary authority for product behavior, routes, UI, workflows, integrations, and business logic..import/database/ from database.zip is the primary authority for persisted entities, schema inference, and seed data when CSV rows exist..import/domain/ and .import/domain-source.txt from domain.zip are supporting context only..tasks/domain.md plus org name, org description, logos, colors, and brand context are low-authority presentation context only.Do not let org/company knowledge or .tasks/domain.md redefine the imported product's domain, routes, workflows, schema, or product framing. This migration intentionally does not rely on the domain skill as product authority.
While .tasks/domain.md may exist, treat it as effectively ignorable for product-definition decisions during migration. The real source of truth is the imported codebase in .import/project/ plus the imported database files in .import/database/. Use domain material only if it helps clarify minor presentation context and never let it outrank source code or source data.
Migrate into the prepared Customware full-stack target:
better-sqlite3Do not preserve the uploaded source app's original runtime stack.
Read the exact files for the active task before doing work.
Migration build
.agents/skills/existing-project-migration/references/phase-1/overview.md.agents/skills/existing-project-migration/references/phase-1/artifacts.md.agents/skills/existing-project-migration/references/phase-1/grading.mdMigration verify
.agents/skills/existing-project-migration/references/phase-2/overview.md.agents/skills/existing-project-migration/references/phase-2/artifacts.md.agents/skills/existing-project-migration/references/phase-2/grading.mdIf the task text is unclear, read both phase overview files first, determine which phase is active, then load the matching artifact and grading references.
These are hard rules.
migration-plan.json, migration-review.md, and migration-open-gaps.md. Unrecorded drift is a fail.Imported App Migration, Migration slice, or any similar framing./ while unauthenticated..import/database/ as seed-data authority when present.These files are mandatory quality gates during migration:
.import/migration-plan.json.import/migration-checklist.md.import/migration-review.md.import/migration-open-gaps.mdUse these templates directly:
.agents/skills/existing-project-migration/assets/templates/migration-plan.json.agents/skills/existing-project-migration/assets/templates/migration-checklist.md.agents/skills/existing-project-migration/assets/templates/migration-review.md.agents/skills/existing-project-migration/assets/templates/migration-open-gaps.mdRules:
Migration build creates any missing artifact only after deep source intake.Migration verify fails if any required artifact is missing at verify start.migration-review.md and migration-open-gaps.md after every meaningful implementation or verification pass.migration-open-gaps.md still contains ordinary migration drift, the task is not done.Migration build is phase 1.
Migration verify is phase 2.
.import/, Playwright outputs, and temporary migration-only artifacts as the last stepBoth phases must loop until the score threshold passes, all critical items pass, and no ordinary open gaps remain. Do not run the rubric a couple of times, notice it is still failing, and stop. The point of grading is to force more iteration. Keep fixing and re-grading until the result clears the passing bar with a strong score, roughly in the high-pass range rather than barely scraping by.
Phase 1 is interactive-test-heavy. Phase 2 is automated-test-heavy. Phase 1 should produce the source-faithful app plus exhaustive user-perspective route coverage evidence. Phase 2 should turn that evidence into durable unit and end-to-end coverage, do only a light sanity recheck interactively, and then leave the repo clean.
Phase 1 already owns exact UI preservation. Do not defer meaningful screen parity to phase 2. By the end of phase 1, the migrated app should already look and behave like the same app with only the runtime swapped. Because the agent can read the source frontend code directly, treat the original UI implementation as translation input, not inspiration. Port route-level composition, named page sections, section ordering, labels, actions, filters, forms, tables, charts, empty states, and style tokens as directly as the new stack allows. A screen that is only visually close, only in the same business area, or explained with migration or provenance copy is a fail. Do not wait for the browser pass to notice basic structural drift that the code already reveals. If the source app clearly has a persistent sidebar, navigation sections, a header block, a tab strip, a filter bar, a full table section, a table header band, a form section, or another major visible surface, confirm that the migrated code still contains it in roughly the same arrangement before the interactive pass. Per-screen grading must be concrete, not impressionistic. Compare the migrated screen against the extracted exact contract item by item, fail the round on mismatches, fix them, and re-grade until the screen passes.
app/lib/trpc-provider.tsx and app/utils/error-logger.ts when merging client-only-spa app/..import/ and other temporary migration evidence through phase 1 and during phase-2 verification, then remove them in the final phase-2 cleanup step unless the task explicitly requires durable retention.development
This skill is strict implementation instruction, not advisory reference text. The skill treats the HTML as discovery-only input, forces interactive Playwright route/state capture, then moves through scored gates for source acceptance, implementation planning, authored UI reproduction, implementation integrity, visual verification, and adversarial proof before signoff.
development
Primary Playwright governance skill for sandbox browser verification and deterministic end-to-end authoring or rewrite work.
development
Universal visual quality skill for every Customware build. Encodes layout philosophy, hierarchy, restraint, rhythm, brand theming mechanics, the template contract, BrandMark rendering, archetype catalog, component recipes, and aesthetic anti-patterns. Read on every UI build. The first task agent (mitb-initial-agent) runs the vision pass once; this skill is the implementation contract that turns vision into a coherent app. Trigger signals: any UI build, improving visual quality, aesthetic balance, polished design, hierarchy, restraint, taste, component design, layout principles, premium feel, brand theming, template contract, light-mode default, BrandMark.
tools
Use this skill when adding, placing, configuring, or fixing the Customware support chat widget in the Customware React Router client-only SPA template. It covers root.tsx/root document script loading, route/layout placement, required org/project ids, bubble versus full mode, optional metadata and style options, page-operation support, and constraints for MITB-style code generation.