Hợp đồng kiến trúc Compose
Skill đặt ra hàng rào kiến trúc cho app Jetpack Compose / Compose Multiplatform: module graph, MVI, phân tầng lỗi và quyền sở hữu state.
Làm được gì
Định nghĩa "luật nhà" mà Claude phải tuân theo khi viết hoặc review code Compose / Compose Multiplatform.
- Module graph: phụ thuộc một chiều
:feature:*→:data:*/:core:*, cấm feature tham chiếu feature khác - Hợp đồng MVI: mọi ViewModel kế thừa
BaseViewModel<Action, State, Effect>,Contract.ktchỉ chứaUiState/UiAction/UiEffect - Phân tầng lỗi: lần tải đầu thất bại → inline + Retry; refresh thất bại → popup; chỉ polling nền mới được im lặng
- Quyền sở hữu state: mỗi state một chủ duy nhất, cấm mirror bằng
rememberSaveable, bản nháp nhập liệu đặt trongSavedStateHandle - DI & điều hướng: Koin annotations, chỉ dùng Navigation 3 với
NavKeysealed interface - Checklist kiểm tra: chạy
run-checks.sh, biên dịch, test JVM, tự soát các pattern bị cấm
Bảng "khi nào KHÔNG dùng" phân vai rõ với các skill anh em: thêm screen (compose-feature), composable (compose-ui), repository (compose-data)...
Phù hợp với ai
- Nhóm phát triển app Compose / KMP theo kiến trúc multi-module
- Tech lead muốn code do AI sinh ra không trôi dạt sang pattern khác mỗi lần
- Dự án đã chuẩn hóa MVI + Koin + Navigation 3
Ví dụ sử dụng
- Thêm ViewModel mới — code sinh ra có đúng một entry point
onActionvà mọi tác vụ async đi qualaunchGuarded(onError = …). - Nhờ review PR — chỉ ra các điểm blocking: import chéo feature,
try/catchthủ công, bọcResult, trộn tầng lỗi. - Yêu cầu "chèn một screen MVI vào feature MVVM cũ" — skill nói không trước bằng một câu lý do, rồi vẫn implement theo pattern hiện có và đề xuất migration riêng.
· · · 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-architecture/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-architecture từ repo GitHub Meet-Miyani/compose-skill vào ~/.claude/skills/compose-architecture/ 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.
- Clone repo:
git clone https://github.com/Meet-Miyani/compose-skill.git - Tạo thư mục skill:
mkdir -p ~/.claude/skills - Copy skill:
cp -r compose-skill/skills/* ~/.claude/skills/(nên copy toàn bộ vì skill này hoạt động cùngcomposelàm entry point và các skill anh em nhưcompose-feature,compose-ui) - Kiểm tra thư mục
references/vàtemplates/core/đã được copy kèm. - Khởi động lại Claude Code và thử: "Review ViewModel này theo hợp đồng kiến trúc Compose".