blog
Blog
Ghi chép về lập trình web: Next.js, WordPress, hiệu năng, và những chỗ vấp trong dự án thật.
Claude Code + NotebookLM + Obsidian: dựng pipeline nghiên cứu, và nửa cầu nối không chính chủ
Cách ghép Claude Code, NotebookLM và Obsidian thành pipeline nghiên cứu: skill nào có sẵn, vì sao NotebookLM không có API cho tài khoản cá nhân, và cái giá phải trả khi ghép ba công cụ này.
Viết CLAUDE.md đúng chuẩn: bốn nhóm quy tắc và giới hạn thật của Claude Code
CLAUDE.md hoạt động tốt khi chia thành bốn nhóm rõ ràng: lệnh, quy tắc, kiến trúc theo path, và cách mở rộng khi dự án lớn lên. Hướng dẫn viết từng nhóm đúng giới hạn kỹ thuật thật của Claude Code, kèm ví dụ chạy được.
Bỏ commit thư mục out/: dựng CI/CD build static ngay trên server
Repo này có 29 trên 51 commit đụng vào thư mục build output. Cách bỏ hẳn nó: self-hosted runner build ngay trên server, publish bằng một thao tác đổi symlink, purge Cloudflare, và ba cái bẫy bash chỉ lộ ra khi đem ra test.
Loop engineering: thôi prompt agent, đi thiết kế cái vòng lặp prompt nó
Dựng một vòng lặp cho agent giờ mất mười lăm phút. Phần khó là nhét vào trong đó một thứ dám nói "không". Năm nước đi của một vòng, năm kiểu hỏng, và vòng lặp thật của site này đang đi được nửa đường.
codebase-memory-mcp: dựng knowledge graph cho codebase và những lưu ý
Một binary C index cả repo thành knowledge graph để agent hỏi bằng graph query thay vì grep từng file. Cách cài, ba tool dùng nhiều nhất, và hai lỗi im lặng làm graph thiếu mà vẫn báo indexed.
Gemini 3.6 Flash trên Antigravity CLI — ít hơn 17% output token
Google thay Gemini CLI bằng Antigravity CLI, và 3.6 Flash là model đáng để mặc định trong terminal. Cách chọn model bằng agy, chạy headless, và tính tiền cho một lượt agent.