# Làm app Mac đầu tiên với Claude, không cần lập trình

[Tam Nguyen](https://homus.dev/speakers/tam-nguyen) · [tamhn](https://homus.dev/orgs/tamhn)

> Làm Tally, một app Mac giúp tập trung, bằng Claude qua 4 bước: thiết kế với /design, lập kế hoạch bằng bộ skill BAMA, xây từng phần, tự kiểm tra.

Topics: Skills, Coding Agents, Workflow

Canonical: https://homus.dev/talks/lam-ung-dung-mac-dau-tien-trong-2-gio-khong-can-lap-trinh

## 1. Tally: một app Mac đếm mỗi lần mất tập trung

Video mở đầu bằng một app Mac mà Tam Nguyen đang dùng để giúp anh tập trung hơn (video đăng ngày 29/10/2026). App tên là Tally. Việc chính của nó là đếm mỗi lần anh mất tập trung trong lúc làm việc. Trên màn hình, ở tab Today, có một vòng đồng hồ đếm ngược màu cam ghi 57:05 "left of 60:00", bên cạnh là kết quả của giờ đang làm, "Write three cold email variants for the new campaign", một nút "I got distracted" và dòng nhắc rằng có thể bấm phím Option cộng Space từ bất kỳ app nào. Bên dưới, mỗi lần bị phân tâm được ghi thành một gạch đếm, kèm các nhãn nguyên nhân như Phone, New tab, Notification, Wandering thought, Someone talked to me (demo trong video đăng ngày 29/10/2026).

![App Tally ở tab Today: đồng hồ đếm ngược 57:05, kết quả của giờ thứ nhất và nút I got distracted](https://homus.dev/photos/M9L-yChP3uU-0023.jpg)

Tab Today của Tally trong demo (video đăng ngày 29/10/2026): đồng hồ 60 phút đang chạy, kết quả cần làm xong trong giờ này, nút "I got distracted" và bốn gạch đếm cho bốn lần mất tập trung.

Theo Tam (video đăng ngày 29/10/2026), cái tiện là bộ đếm này nằm trên tất cả các app. Anh có thể đang làm trong Claude Code, hoặc đang duyệt web, và khi thấy mình mất tập trung thì chỉ cần bấm vào dấu cộng trên bộ đếm nhỏ ở góc màn hình. Còn cái hay, theo anh, là mỗi giờ làm xong, app dán một tờ note lên một bức tường, giống như một thành quả anh đã làm được. Trên màn hình, trang Sticky Wall của app có tiêu đề "1 note on the wall" và dòng "Every note is one finished hour", kèm các số Streak, Distractions / hour và Outcomes hit (demo trong video đăng ngày 29/10/2026).

![Trang Sticky Wall của Tally và bộ đếm nổi 57:24 có nút cộng ở góc phải dưới màn hình](https://homus.dev/photos/M9L-yChP3uU-0003.jpg)

Trang Sticky Wall của Tally, mỗi tờ note là một giờ đã làm xong; ở góc phải dưới là bộ đếm nổi với thời gian còn lại, các gạch đếm và nút cộng, nằm đè lên cửa sổ Claude phía sau (demo trong video đăng ngày 29/10/2026).

## 2. Vấn đề không nằm ở AI mà ở thứ tự làm

Tam cho biết anh không viết một dòng code nào cho app này, và phần quan trọng nhất lại không phải phần lập trình (video đăng ngày 29/10/2026). Nếu bạn đã từng bảo AI viết app cho mình, theo anh, chắc chắn bạn đã gặp cảnh này: app chạy được vài chức năng, rồi bắt đầu lỗi, rồi càng sửa càng rối. Thẻ chú thích trên màn hình lúc này ghi "Cách cũ: bảo AI code ngay", mục đầu tiên là "Chạy được vài chức năng".

Theo Tam (video đăng ngày 29/10/2026), vấn đề thường không nằm ở AI mà nằm ở thứ tự mình làm. Lần này anh đổi thứ tự, và trong một ngày anh có một app hoàn chỉnh. Anh cho biết khi tạo app này, anh chỉ tốn khoảng 5% weekly limit, tức giới hạn dùng theo tuần, của gói Claude anh đang trả; thẻ chú thích trên màn hình ghi "Chi phí thực tế trên Claude: ~5% limit". Theo số đo của Tam (video đăng ngày 29/10/2026), anh cũng không tốn thêm đồng nào ngoài gói Claude đó.

Trong video đăng ngày 29/10/2026, anh đi qua toàn bộ quy trình 4 bước anh đã làm: vì sao anh bắt đầu bằng thiết kế, tức là design, chứ không phải code, và bộ skill đã giúp Claude tự tìm lỗi của chính nó trước khi anh thấy. Nhưng trước hết, anh kể lý do anh quyết định làm một app giúp mình tập trung.

Hai cách làm app với AI mà Tam so sánh trong video đăng ngày 29/10/2026: bảo AI code ngay thì app chạy được vài chức năng rồi lỗi; đổi thứ tự thành 4 bước thì trong một ngày anh có một app hoàn chỉnh.

## 3. Phương pháp tập trung 60 phút

Tam kể anh đã dành ra 6 tháng để dồn hết vào một mục tiêu, và tập trung là thứ đã thay đổi kết quả của anh. Nhưng giữ được tập trung mỗi ngày thì rất khó. Gần đây, trong một cộng đồng anh tham gia, có một người chia sẻ cách người đó tập trung 4 tiếng mỗi ngày và tạo ra được rất nhiều kết quả. Mỗi giờ làm việc đi theo đúng một quy trình gồm năm bước (theo lời Tam kể, video đăng ngày 29/10/2026):

- Chọn một kết quả cụ thể. Không phải "làm marketing", mà là "viết 3 mẫu email cho chiến dịch mới" chẳng hạn, cụ thể như thế (theo lời Tam kể, video đăng ngày 29/10/2026).

- Bấm giờ 60 phút, và không đổi việc khi việc đó khó (theo lời Tam kể, video đăng ngày 29/10/2026).

- Đếm mỗi lần bị sao nhãng, ví dụ cầm điện thoại lên, hoặc mở một tab mới vì nghĩ sang chuyện khác (theo lời Tam kể, video đăng ngày 29/10/2026).

- Ghi lại giờ vừa làm và dán một tờ note lên tường (theo lời Tam kể, video đăng ngày 29/10/2026).

- Nghỉ, xem lại mục tiêu, rồi làm giờ tiếp theo (theo lời Tam kể, video đăng ngày 29/10/2026).

Người đó không bắt đầu với 4 tiếng. Theo lời Tam kể (video đăng ngày 29/10/2026), người đó bắt đầu với 1 tiếng trước, rồi tăng dần lên 2, 3, 4 tiếng, và càng ngày khả năng tập trung càng cao hơn. Tập trung được luyện như một kỹ năng. Thẻ chú thích trên màn hình ghi "Tập trung là 1 kỹ năng, tăng dần", với bốn cột 1H, 2H, 3H, 4H cao dần và dòng "Luyện tập trung như 1 kỹ năng".

![Tam nói trước camera, thẻ chú thích bên trái có bốn cột 1H, 2H, 3H, 4H cao dần](https://homus.dev/photos/M9L-yChP3uU-0223.jpg)

Thẻ chú thích "Tập trung là 1 kỹ năng, tăng dần" trong video đăng ngày 29/10/2026: bốn cột từ 1 giờ lên 4 giờ một ngày, đúng cách người trong cộng đồng kia luyện dần thời gian tập trung.

Vấn đề, theo Tam (video đăng ngày 29/10/2026), là người đó dùng cả đống thứ: một cái máy bấm tay để đếm, một Google Form, một bảng tính. Còn anh thì muốn gom hết vào một app nằm ngay trên máy của mình.

## 4. Bước 1: thiết kế trước với lệnh /design

Tam bắt đầu ở một chỗ mà theo anh ít ai nghĩ tới (video đăng ngày 29/10/2026). Phần lớn mọi người mở AI ra và gõ "viết cho tôi một cái app". Anh làm ngược lại: anh dùng lệnh /design của Claude. Trong ô nhập của app Claude, anh gõ /design (ô nhập hiện gợi ý "/design [what to design]"), rồi bảo nó thiết kế cho anh một app ghi chú về phương pháp 60 phút này, tức là nhờ nó thiết kế trước.

Theo Tam (video đăng ngày 29/10/2026), khi dùng lệnh /design này trên Claude, anh thấy đó là sức mạnh của Claude, và nó rất mạnh: nó thiết kế luôn cho anh một app, và theo anh trông rất đẹp. Theo số đo của Tam trong video đăng ngày 29/10/2026, anh chỉ cần đợi khoảng 7 phút là có bản thiết kế, gồm 6 màn hình. Claude tự đặt tên app là Tally, theo kiểu gạch đếm mỗi lần bị sao nhãng. Trên canvas, tiêu đề ghi "Tally, a Mac app for the 60-minute focus method", với sáu artboard xếp thành ba hàng: Today, Focus mode với bộ đếm nổi, bức tường note, nhật ký từng giờ, Progress, và nghi thức sáng tối.

![Canvas thiết kế của Claude với tiêu đề Tally, a Mac app for the 60-minute focus method và sáu màn hình](https://homus.dev/photos/M9L-yChP3uU-0304.jpg)

Bản thiết kế Claude tạo bằng lệnh /design trong video đăng ngày 29/10/2026: sáu màn hình của Tally đặt trên một canvas, góc trên bên phải có nút Play để chạy thử.

Màn hình đầu tiên bấm thử được luôn (demo trong video đăng ngày 29/10/2026). Tam bấm vào nút Play, chọn "play on canvas", và bản thiết kế bắt đầu chạy như một app thật. Màn hình hiện ra là bước "Choose outcome" của giờ thứ 3 trên 4, với câu hỏi lớn "What will exist at the end of this hour?", ô nhập Outcome, các gợi ý như "Write three cold email variants for the new campaign" và nút "Start 60:00". Anh bấm thử, và nó hiển thị luôn. Như vậy anh có thể test được app trước khi bắt đầu lập trình.

![Bản thiết kế chạy thử: màn hình What will exist at the end of this hour với bốn bước Choose outcome, Focus 60 min, Record, Rest and review](https://homus.dev/photos/M9L-yChP3uU-0343.jpg)

Bản thiết kế ở chế độ chạy thử (demo trong video đăng ngày 29/10/2026): thanh trên cùng chia giờ làm việc thành bốn bước Choose outcome, Focus 60 min, Record, Rest & review; cột trái ghi mức hiện tại "3 hours / day".

## 5. Vì sao thiết kế trước, và vì sao Tam chọn Claude

Vì sao lại là thiết kế trước? Theo Tam (video đăng ngày 29/10/2026), thiết kế là lúc rẻ nhất để đổi ý. Sửa một màn hình trên bản vẽ chỉ mất vài giây, nhưng sửa nó sau khi đã code xong thì mệt hơn rất nhiều. Thẻ chú thích trên màn hình ghi "Vì sao phải thiết kế trước?", dòng đầu "Sửa màn hình trên bản vẽ: mất vài giây", dòng sau "Sửa sau khi đã code xong:".

![Tam nói trước camera, thẻ chú thích Vì sao phải thiết kế trước, sửa màn hình trên bản vẽ mất vài giây](https://homus.dev/photos/M9L-yChP3uU-0403.jpg)

Thẻ chú thích "Vì sao phải thiết kế trước?" trong video đăng ngày 29/10/2026: sửa màn hình trên bản vẽ mất vài giây, còn sửa sau khi đã code xong thì tốn công hơn nhiều.

Đây cũng là lý do Tam khuyên dùng Claude nếu bạn muốn làm app (video đăng ngày 29/10/2026). Theo anh, khả năng thiết kế của Claude rất tốt, khả năng design của nó trội hơn rất nhiều so với Antigravity hay ChatGPT. Đó là nhận xét của Tam tính đến video đăng ngày 29/10/2026.

## 6. Bước 2: BAMA biến bản thiết kế thành kế hoạch

Để biến bản thiết kế thành app thật, Tam dùng BAMA, viết tắt của Build Any Mac App, một bộ skill miễn phí trên GitHub của Dave Ebbelaar (theo Tam, video đăng ngày 29/10/2026). Trang repo trên màn hình có dòng About "BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI", giấy phép MIT, và thẻ chú thích ghi "Bước 2 & 3: Bộ skill BAMA (Build Any Mac App)". Theo Tam, bộ skill này giống như một cuốn cẩm nang mà Claude đọc trước khi làm một việc.

![Trang GitHub của repo bama với phần About, các thư mục skills, specs, scripts và banner BAMA Build Any Mac App](https://homus.dev/photos/M9L-yChP3uU-0423.jpg)

Repo BAMA trên GitHub như trong video đăng ngày 29/10/2026: các thư mục .claude-plugin, .claude, skills, specs, scripts, phần About mô tả bộ agent skill để làm app macOS bằng Swift và SwiftUI, và banner "BAMA, Build Any Mac App".

Tam kéo qua bảng skill trong README và chỉ ra rằng trong đó có rất nhiều thứ (video đăng ngày 29/10/2026): nó có thể nghiên cứu, nó tạo user stories, nó biết hết về Swift, rồi nó biết cách tự test những gì nó tự làm. Nên khi anh đã chốt xong bản thiết kế, Claude tự tạo ra brief, stories và glossary. Anh chỉ bảo nó biến bản thiết kế Tally thành brief và user story: anh nói anh muốn tạo một app như thế này, ý tưởng là như thế này, và nó tạo brief, stories và glossary, tức là cái kế hoạch, rồi đến các story.

Trên màn hình, Claude báo đã tạo ba file BRIEF.md, STORIES.md và GLOSSARY.md, rồi sửa vài từ không khớp glossary ("session" thành "hour", "routine" thành "ritual"). Bản tóm tắt của Claude ghi rằng nó biến bản thiết kế Tally thành một BAMA plan gồm ba file theo format của hai skill app-brief và user-stories (demo trong video đăng ngày 29/10/2026):

- BRIEF.md, một trang: việc chính là chạy một giờ tập trung, xem bằng chứng, tăng dần từ 1 lên 4 giờ, mở đầu và khép lại một ngày; dữ liệu gồm bốn model Session, Distraction, Goal và RitualStep; hình dạng là một cửa sổ có sidebar, một đồng hồ trên thanh menu và một bộ đếm nổi; phần nối với hệ thống gồm phím tắt toàn cục Option-Space, thông báo, Shortcuts và menu Share (demo trong video đăng ngày 29/10/2026).

- STORIES.md, 39 story; mỗi dòng nghiệm thu ghi cách kiểm: snapshot, unit test, self-test hoặc kiểm tay. Các milestone được đặt tên: Core hour loop (10 story), Evidence, Capacity, Speed, Rituals and system, Polish (demo trong video đăng ngày 29/10/2026).

- GLOSSARY.md, mỗi thứ một từ, ví dụ "hour" chứ không phải "session", "ritual" chứ không phải "routine" (demo trong video đăng ngày 29/10/2026).

![Bản tóm tắt của Claude: BRIEF.md, STORIES.md với 39 story chia sáu milestone, GLOSSARY.md](https://homus.dev/photos/M9L-yChP3uU-0503.jpg)

Kế hoạch Claude viết bằng các skill của BAMA trong demo (video đăng ngày 29/10/2026): BRIEF.md một trang, STORIES.md với 39 story chia sáu milestone, GLOSSARY.md, và mục "Changes from the design" ghi những gì bị bỏ khỏi bản thiết kế.

Bạn có thể review kế hoạch này trước. Nhưng Tam cho biết anh cũng không review mấy, vì nó khá rõ ràng, nên anh duyệt luôn (video đăng ngày 29/10/2026). Lúc này Claude đã có các skill của BAMA. Anh cho biết anh không phải lập trình viên hay gì cả, anh là người thiên về phân tích. Theo anh, cái quan trọng là bạn xem kế hoạch, thấy nó hợp lý thì cứ làm theo.

## 7. Bước 3: xây từng phần theo story và milestone

Trong demo (video đăng ngày 29/10/2026), Claude đi theo từng bước một, tức là theo từng user story: story 1, story 2, và với mỗi story nó đi kiểm tra tất cả những thứ cần kiểm. App được chia ra nhiều chặng khác nhau, mỗi chặng là một milestone (Tam nhắc tới Milestone 2), và anh có thể kiểm tra từng chặng. Ví dụ khi Claude tạo app, lúc đầu app chỉ có tab Today. Nó làm xong phần đó, cho anh kiểm tra, thử trước, rồi mới tạo ra tab thứ hai.

![Bản tóm tắt của Claude sau milestone đầu: How it was built, What you can do now với các story S-001 đến S-010, và mục Checks](https://homus.dev/photos/M9L-yChP3uU-0603.jpg)

Báo cáo của Claude sau milestone đầu trong demo (video đăng ngày 29/10/2026): app dựng từ template new-mac-app của BAMA, mỗi story một commit từ S-001 đến S-010, danh sách những gì đã dùng được, và dòng Checks ghi 14 unit test và 28 bước self-test đều pass.

Vì sao lại làm từng phần một? Theo Tam (video đăng ngày 29/10/2026), vì mỗi story là một bước nhỏ, nên nếu có gì sai thì chỉ cần quay lại đúng bước đó. Anh rút ra một bài học: khi AI làm quá nhiều thứ một lúc thì nó rất hay hỏng, còn nếu bạn giao cho nó từng việc nhỏ thì nó làm chuẩn xác hơn. Đây là nhận xét của anh về AI tính đến video đăng ngày 29/10/2026.

Về thời gian, theo số đo của Tam (video đăng ngày 29/10/2026), anh bắt đầu thiết kế lúc 7 giờ 30 sáng, và khoảng 1 đến 2 tiếng sau là đã làm xong hết; thẻ chú thích trên màn hình ghi "Thời gian thực tế trong ngày: 07:30 sáng, bắt đầu". Trong khoảng thời gian đó anh làm việc khác. Nhưng theo anh, chỉ làm nhanh thôi thì chưa đủ.

## 8. Bước 4: Claude tự kiểm tra và tự sửa lỗi

Điều khiến Tam bất ngờ nhất là cách Claude tự kiểm tra (video đăng ngày 29/10/2026). Nếu quan sát, bạn sẽ thấy sau mỗi story, tức là mỗi tính năng, Claude làm đúng một vòng: nó build app, chụp màn hình, test thử ở chế độ sáng và chế độ tối, tự nhìn lại ảnh rồi kiểm tra bố cục, chạy test rồi mới lưu lại (demo trong video đăng ngày 29/10/2026). Trên màn hình, các dòng như "Ran 2 commands, read progress-light.png" và "Ran a command, read progress-dark.png" nối nhau, và sau mỗi lần đọc ảnh Claude ghi nhận xét, ví dụ heatmap trông đúng nhưng đang chiếm cả chiều ngang với nhiều khoảng trống, nên nó đặt lại chiều rộng và sửa dải màu cho chế độ tối.

![Cửa sổ Claude với các dòng read progress-light.png, read progress-dark.png và nhận xét về heatmap](https://homus.dev/photos/M9L-yChP3uU-0743.jpg)

Vòng tự kiểm tra của Claude trong demo (video đăng ngày 29/10/2026): build, chụp màn hình bản sáng và bản tối, đọc lại ảnh, ghi lỗi bố cục của heatmap rồi sửa trước khi commit story S-023.

Theo Tam (video đăng ngày 29/10/2026), Claude bắt được 3 lỗi mà nó tự tìm ra và sửa trước khi anh thấy:

- Ngày đổi giờ mùa hè: ngày mới trong app bắt đầu lúc 3 giờ sáng thay vì 4 giờ. Tam nói anh không bao giờ nghĩ tới lỗi này (demo trong video đăng ngày 29/10/2026).

- App bị crash khi mở bức tường note (demo trong video đăng ngày 29/10/2026).

- Chữ trên 5 màu giao diện bị nhạt, khó đọc (demo trong video đăng ngày 29/10/2026).

Mỗi lỗi thành một luật (demo trong video đăng ngày 29/10/2026). Mỗi lần sửa lỗi, Claude ghi vào một file nhật ký (trên màn hình, Claude gọi file này là FIXLOG), kèm một luật mới để lỗi đó không lặp lại nữa. Trên màn hình có dòng Claude viết "Logging the two text-field lessons in the FIXLOG and committing S-029", sau khi nó sửa một ô nhập chỉ hiện dòng đầu dù còn chỗ cho hai dòng.

![Cửa sổ Claude với dòng Logging the two text-field lessons in the FIXLOG and committing S-029](https://homus.dev/photos/M9L-yChP3uU-0823.jpg)

Claude ghi bài học vào FIXLOG trước khi commit story S-029 (demo trong video đăng ngày 29/10/2026); phía trên là hai lần nó đọc lại ảnh chụp Tally-id.png để kiểm tra ô nhập.

Cuối cùng, theo Tam (video đăng ngày 29/10/2026), app có 56 unit test, 111 bài tự kiểm tra và 70 ảnh chụp màn hình, tất cả đều pass.

## 9. Bộ skill BAMA có gì đặc biệt

Tam quay lại bảng skill của BAMA để nói nó có gì đặc biệt (video đăng ngày 29/10/2026). Mỗi skill lo một phần của việc làm một app Mac:

- Lên kế hoạch: viết user story, thiết kế trải nghiệm, thiết kế cho Mac (theo Tam, video đăng ngày 29/10/2026).

- Tạo giao diện: hệ thống màu, chữ, lưới bố cục, icon và các thứ khác (theo Tam, video đăng ngày 29/10/2026).

- Code: viết bằng Swift, kết nối với hệ điều hành, phím tắt, thanh menu, thông báo, có hết (theo Tam, video đăng ngày 29/10/2026).

- Kiểm tra: build và xác minh, test app, tạo ra vòng cải tiến (theo Tam, video đăng ngày 29/10/2026).

![Bảng skill của BAMA chia theo Stage Start, Plan, Code, Design với cột Skill và What it does](https://homus.dev/photos/M9L-yChP3uU-0843.jpg)

Bảng skill trong README của BAMA như trên màn hình trong video đăng ngày 29/10/2026: nhóm Start (bama, app-brief, new-mac-app), Plan (research, clone, user-stories), Code (swift-swiftui, os-integrations, performance, improve-architecture, agent-cli) và Design (ux-design, mac-design, design-system, layout-grid).

Cái đặc biệt Tam thấy ở đây (video đăng ngày 29/10/2026) không phải là Claude thông minh hơn, mà là Claude có một quy trình để đi theo, giống như một người mới vào nghề được đưa cho cuốn cẩm nang của một người đã làm 10 năm. Anh thật sự bất ngờ, vì trước khi biết bộ skill này, anh không hề biết cách tạo một app Mac như thế nào. Anh chắc chắn rằng nếu không có bộ cẩm nang này thì việc làm app sẽ cực kỳ khó, sẽ lỗi một đống, và anh sẽ nản ngay khi bắt đầu. Khi anh dùng thử thì mọi thứ đều rất ổn, và anh không ngờ nó có thể thiết kế chỉn chu như vậy (theo Tam, video đăng ngày 29/10/2026).

Anh dùng gói Claude Max, nên theo Tam (video đăng ngày 29/10/2026) anh không tốn thêm đồng nào cả cho app này.

## 10. Điều cần nhớ: thiết kế, kế hoạch, rồi mới lập trình

Nếu chỉ nhớ một điều từ video này, Tam muốn bạn nhớ thứ tự: thiết kế trước, kế hoạch sau, lập trình cuối cùng (video đăng ngày 29/10/2026). Rồi anh chào tạm biệt.

Thứ tự Tam nhắc lại ở cuối video đăng ngày 29/10/2026: thiết kế trước, kế hoạch sau, lập trình cuối cùng.

## Nguồn và liên kết

- Tên gốc: Làm Ứng Dụng Mac Đầu Tiên Trong 2 Giờ, Không Cần Lập Trình
- Sự kiện: [YouTube](https://homus.dev/events/youtube)
- Video gốc: [https://www.youtube.com/watch?v=M9L-yChP3uU](https://www.youtube.com/watch?v=M9L-yChP3uU)

- Kênh YouTube tamhn (Tam Nguyen): [youtube.com/channel/UCKVGi56DvNOFW3XnEgPoiwA](https://www.youtube.com/channel/UCKVGi56DvNOFW3XnEgPoiwA)

- BAMA (Build Any Mac App), bộ agent skill của Dave Ebbelaar để làm app macOS bằng Swift và SwiftUI, giấy phép MIT (đọc ngày 29/10/2026): [github.com/daveebbelaar/bama](https://github.com/daveebbelaar/bama)

Nguồn: https://homus.dev/talks/lam-ung-dung-mac-dau-tien-trong-2-gio-khong-can-lap-trinh · cập nhật 2026-10-29
