Hướng dẫn phân tách nền tảng cho Compose Multiplatform
Bộ quy tắc cấp senior cho dự án Compose Multiplatform: đặt code vào commonMain, chọn expect/actual hay interface + DI, và kiểm tra interop iOS/desktop/web.
Lập trìnhNâng cao★ 300⑂ 25Điểm AI 9/10Cập nhật lần cuối: 2 thg 10, 2026
Giúp được gì
- Quyết định vị trí khai báo: ViewModel, Contract và interface repository bắt buộc nằm ở
commonMain; source set nền tảng chỉ chứa đường dẫn, binding và chuyển đổi. - Bảng chọn cầu nối: dịch vụ có state/lifecycle/fake dùng interface trong
commonMain+ binding Koin theo nền tảng; chỉ hook stateless mới dùngexpect/actual. - Interop iOS/Swift: mặc định dùng SKIE, cấm tự viết wrapper cho
Flow/suspend, giữ bề mặt export sang Swift nhỏ và cụ thể. - Bẫy desktop & web: thiếu
kotlinx-coroutines-swingchoDispatchers.Main, đường dẫn DataStore theo nền tảng, giới hạn wasm. - Cổng kiểm tra: chạy
check-commonmain-imports.shđể chặnjava.*,android.*,LocalContextlọt vào code dùng chung và phát hiệnactualcòn thiếu.
Phù hợp với ai
- Đội phát triển KMP/Compose Multiplatform xuất bản cho Android, iOS, desktop và web
- Lập trình viên hay gặp cảnh "chạy tốt trên Android nhưng lỗi khi link iOS"
- Tech lead muốn áp chuẩn Koin + SKIE tự động như một vòng code review
Ví dụ sử dụng
- "Thêm secure storage" → vì là dịch vụ có state, skill đề xuất interface ở
commonMain+ adapter androidMain/iosMain + binding Koin thay vìexpect/actual. - "Dùng Flow của ViewModel bên Swift" → hướng dẫn cấu hình SKIE, kiểm tra phiên bản Kotlin/Swift trong
libs.versions.tomlthay vì viết collector thủ công. - "Ứng dụng desktop không cập nhật UI" → kiểm tra dispatcher Main, artifact lifecycle multiplatform và phạm vi
viewModelScope.
· · · Hướng dẫn cài đặt · · ·
Dùng thử ngay, không cần cài
Dán đoạn dưới vào Claude là dùng được skill này mà không cần cài đặt.
Hãy đọc hướng dẫn trong tệp này và làm theo để giúp mình: https://raw.githubusercontent.com/Meet-Miyani/compose-skill/HEAD/skills/compose-platform/SKILL.md Mình muốn: (viết việc bạn cần ở đây)
Nếu Claude không mở được liên kết, hãy mở liên kết và copy nội dung vào rồi dán.
↓ Thấy hữu ích thì tải ZIP bên dưới và cài. Sau đó skill tự chạy, không phải dán lại mỗi lần.
Cài vào ứng dụng Claude (không cần terminal)
- Tải tệp ZIP bằng nút bên dưới.
- Trong Claude, mở Settings → Capabilities và bật 'Code execution and file creation'. (chỉ một lần)
- Vào Customize → Skills → + → 'Upload a skill' rồi tải tệp ZIP lên.
Cài vào Claude Code
Để Claude làm — dán câu dưới đây vào Claude Code
Hãy cài skill mình tìm thấy trên Claude Skill Mart. Copy thư mục skills/compose-platform từ repo GitHub Meet-Miyani/compose-skill vào ~/.claude/skills/compose-platform/ của mình. Sau khi cài xong, cho mình biết skill này làm được gì trong một câu.
Cài bằng lệnh thủ công
git clone https://github.com/Meet-Miyani/compose-skill.git /tmp/compose-skill && mkdir -p ~/.claude/skills && cp -r /tmp/compose-skill/skills/* ~/.claude/skills/⚠ Đây là skill do người khác tạo. Hãy kiểm tra repo gốc trước khi cài.
- Mở Terminal.
- Tải mã nguồn:
git clone https://github.com/Meet-Miyani/compose-skill.git - Tạo thư mục kỹ năng:
mkdir -p ~/.claude/skills - Sao chép:
cp -r compose-skill/skills/* ~/.claude/skills/(nên chép toàn bộ vì skill này tham chiếu các skill anh em nhưcompose-architecture,compose-ui). - Khởi động lại Claude Code, mở thư mục dự án KMP và yêu cầu kiểu "rà soát phần commonMain giúp tôi".
- Nếu muốn chạy script kiểm tra, cấp quyền:
chmod +x ~/.claude/skills/compose-platform/scripts/run-checks.sh.
Xem mã nguồn trên GitHub ↗Giấy phép: MIT