Classic-to-Default Sync
SkillDev toolsInspect a given commit's web/classic changes and sync all features/fixes to web/default. Use when the user provides a commit ID and wants to audit whether web/default already has the same features as web/classic, port missing features, improve suboptimal implementations, fix bugs, and remove redundant code. Trigger phrases include: "/classic-to-default-sync <hash>", "classic-to-default-sync <hash>", "sync classic to default", "port from classic", "compare classic commit", "classic 和 default 对比", "把这次 classic 的修改同步到 default", "查看这次提交 classic 中的修改并同步", or any request supplying a commit hash together with classic/default comparison intent.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Classic-to-Default Sync skill
What this skill tells your AI
The instructions your AI receives, as published by charliehzm/medharness in vendor/new-api/.agents/skills/classic-to-default-sync/SKILL.md and read by ahel’s review.
Given a commit ID, audit all web/classic changes and ensure web/default reaches feature parity with the best possible implementation.
Input
The user must supply a <commit-id>.
Workflow
Step 1 — Extract classic diff
git show <commit-id> -- web/classic
Read every changed file in web/classic. Identify the logical changes (new features, UI/UX improvements, bug fixes, config tweaks, removed dead code, etc.) — not just line diffs.
Step 2 — Map to default counterparts
For each logical change found in Step 1, locate the equivalent file(s) in web/default/src/. Use Glob/Grep/SemanticSearch as needed. Consider that:
web/classicuses React 18 + Vite + Semi Designweb/defaultuses React 19 + Rsbuild + Base UI + Tailwind CSS- Component names, file paths, and API shapes may differ; match by functionality, not filename.
Step 3 — Triage each change
Classify every logical change as one of:
| Status | Meaning |
|---|---|
| ✅ Already present & optimal | No action needed |
| ⚠️ Present but suboptimal | Improve: logic, layout, style, or code quality |
| ❌ Missing | Implement from scratch in default's stack |
Step 4 — Implement
For each ⚠️ or ❌ item:
- Read the target file(s) in
web/defaultbefore editing (required by project conventions). - Implement using
web/defaultconventions:- React 19 patterns (hooks, Suspense, etc.)
- Base UI primitives where applicable
- Tailwind CSS for styling (no inline styles or Semi Design imports)
useTranslation()+t('English key')for all user-visible strings- TypeScript — explicit types, no
any - No dead code, no redundant comments
- Follow Rule 6 (pointer types for optional relay DTOs) if touching relay-related TS types.
- After editing, run
ReadLintson changed files and fix any introduced lint errors.
Step 5 — i18n
If any new user-visible strings were added, run the i18n sync:
cd web/default && bun run i18n:sync
Then add missing translations for all supported locales (en, zh, fr, ja, ru, vi) following the i18n-translate skill.
Step 6 — Report
Summarise the work in a concise table:
| # | Change (from classic commit) | Status | Action taken |
|---|---|---|---|
| 1 | … | ✅ / ⚠️ / ❌ | None / Improved / Implemented |
If every item is ✅ with no action needed, simply reply: "已完成 — web/default 已具备此次提交的所有功能,且实现质量良好,无需修改。"
Quality bar
- No unused imports, variables, or components
- No commented-out code left behind
- Consistent naming with surrounding
web/defaultcode - All interactive elements accessible (keyboard nav, ARIA labels where Radix doesn't provide them automatically)
- No regressions: existing behaviour in
web/defaultmust not break
Signals
- GitHub stars
- 86
- Forks
- 8
- Last commit
- Jun 2026
Advanced
- Catalog kind
- skill
- Gateway key
classic-to-default-sync- Source
- github.com/charliehzm/medharness