Claude Skill MartKhám phá skillCâu dùng ngayHọc qua videoDùng terminalSkill là gì?
← Về danh sách

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ập trìnhNâng cao★ 300⑂ 25Điểm AI 9/10Cập nhật lần cuối: 2 thg 10, 2026

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.kt chỉ chứa UiState/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 trong SavedStateHandle
  • DI & điều hướng: Koin annotations, chỉ dùng Navigation 3 với NavKey sealed 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

  1. Thêm ViewModel mới — code sinh ra có đúng một entry point onAction và mọi tác vụ async đi qua launchGuarded(onError = …).
  2. Nhờ review PR — chỉ ra các điểm blocking: import chéo feature, try/catch thủ công, bọc Result, trộn tầng lỗi.
  3. 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)
  1. Tải tệp ZIP bằng nút bên dưới.
  2. Trong Claude, mở Settings → Capabilities và bật 'Code execution and file creation'. (chỉ một lần)
  3. Vào Customize → Skills → + → 'Upload a skill' rồi tải tệp ZIP lên.
↓ Tải ZIP
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.

  1. Mở terminal.
  2. Clone repo: git clone https://github.com/Meet-Miyani/compose-skill.git
  3. Tạo thư mục skill: mkdir -p ~/.claude/skills
  4. Copy skill: cp -r compose-skill/skills/* ~/.claude/skills/ (nên copy toàn bộ vì skill này hoạt động cùng compose làm entry point và các skill anh em như compose-feature, compose-ui)
  5. Kiểm tra thư mục references/ và templates/core/ đã được copy kèm.
  6. Khởi động lại Claude Code và thử: "Review ViewModel này theo hợp đồng kiến trúc Compose".