Tóm tắt nhanh:
ak-better-auththêm hoặc mở rộng đăng nhập bằng Better Auth cho app TypeScript, sau khi xem bản đang cài và cách nối hiện có. Skill không khai báo skill tiếp theo. Nó không tự đổi sang cách đăng nhập khác khi bạn không yêu cầu, và không đưa secret ra phía client.
Công khai: mình là maintainer của AgentKit và có quan hệ affiliate: link AgentKit trong bài là link affiliate, mua qua link này bạn được giảm 30%.
Tóm tắt
Dùng khi bạn cần đăng nhập cho app TypeScript và đã chọn Better Auth, hoặc app đã có Better Auth và cần thêm provider, plugin, đổi database. Không cần khi bạn dùng một thư viện auth khác hoặc chưa chọn cách đăng nhập nào.
flowchart LR
A["App TypeScript cần đăng nhập"] --> B["ak-better-auth"]
C["App đã có Better Auth, cần thêm tính năng"] --> B
B --> D["Auth đã nối, schema đã cập nhật"]
D --> E["Đã kiểm callback lỗi, phiên hết hạn, phiên bị thu hồi"]Mỗi lần chạy, nó trả lời 4 câu hỏi:
| Khái niệm | Câu hỏi | Ví dụ |
|---|---|---|
| Xem hiện trạng trước | Dự án đã có Better Auth chưa, đang dùng bản nào? | Có better-auth trong package.json, đã có lib/auth.ts và route /api/auth/[...all]: nó sửa ở đó, không dựng lại từ đầu. |
| Dựng mới hay mở rộng | Lần này là tích hợp mới hay thêm vào cái đang chạy? | Thêm 2FA cho app đã có đăng nhập: bật plugin twoFactor ở server, twoFactorClient ở client, rồi sinh lại schema. Không chạy lại bước khởi tạo. |
| Có sẵn hay cần plugin | Tính năng này Better Auth có sẵn, hay phải bật plugin? | Có sẵn: email/mật khẩu, OAuth, xác minh email, quản lý phiên, rate limit. Cần plugin: 2FA, passkey, magic link, organization. |
| Đường hỏng và bảo mật | Khi có sự cố thì app xử lý ra sao? | Callback OAuth trả lỗi, phiên quá hạn, phiên đã bị thu hồi. Secret chỉ ở phía server. Token magic link chỉ dùng được một lần. |
Trước khi nói một lỗ hổng đã được vá, nó đối chiếu bản Better Auth đang cài với security advisories và release notes của bản đó.
Prompt mẫu (dựng đăng nhập mới):
/ak-better-auth email/password và Google OAuth
Thêm đăng nhập cho app Next.js <tên app> (App Router, PostgreSQL qua Drizzle).
Kết quả: người dùng đăng ký bằng email, hoặc bấm "Đăng nhập với Google".
Ràng buộc: secret chỉ nằm trong .env phía server, không commit .env.
Xong khi: đăng ký, đăng nhập, đăng xuất chạy được; callback Google lỗi thì báo rõ.Skill này không có cờ.
Phần dưới đây là bản chi tiết: luồng chạy, 5 tình huống kèm prompt, lịch sử thay đổi theo bản ak và các lỗi hay vấp. Bản chi tiết và trang trực quan dành cho subscriber. Agent của bạn cũng tìm được trong đó qua MCP của portal.
Mở khi tài khoản có quyền subscriber
Bài này dành cho subscriber
Khi tài khoản có quyền, toàn bộ bài, bản visual tương tác và lệnh gọi từ agent đều mở.
- Đăng nhập hoặc tạo tài khoản modernEngineerQuyền đọc gắn với email tài khoản.
- Chọn gói trên trang Bảng giáGói 1, 3 hoặc 12 tháng, trả bằng chuyển khoản VietQR. Quyền đọc mở khoảng một phút sau khi tiền về.
- Hoặc nhập mã Facebook subscriberNgười ủng hộ trang qua Facebook nhận mã kích hoạt qua tin nhắn mỗi tháng.
Đã là subscriber? Đăng nhập để đọc.
Dùng bài này trong agent của bạn
Lấy API keyChép đoạn dưới, dán vào Claude Code, Codex hay agent bạn đang dùng. Agent đọc bài rồi đối chiếu với repo đang mở.
Đọc bài "ak-better-auth: thêm đăng nhập Better Auth cho app TypeScript" trên modernEngineer rồi áp dụng vào repo này.
1. Gọi tool content_get của MCP server modernengineer với locale "vi", slug "ak-better-auth". Nếu chưa nối MCP server modernengineer, dừng lại và hướng dẫn tôi nối theo https://modernengineer.dev/vi/mcp.
2. Tóm tắt các bước chính của bài, chỉ ra bước nào áp dụng được cho repo này.
3. Đề xuất thay đổi cụ thể và hỏi tôi trước khi sửa file.Nối MCP cho Claude Code (một lần)
claude mcp add --transport http modernengineer \
https://api.modernengineer.dev/mcp \
--header "Authorization: Bearer <API key>"Đọc trọn bài qua MCP cần API key của tài khoản subscriber hoặc đã mua guide này. Không có quyền, agent sẽ chỉ đọc được phần mở đầu.
- Phiên bản
- v1.0.0
- Cập nhật
- 22/10/2026
- Giấy phép
- Bảo lưu mọi quyền
- Slug
- ak-better-auth


