TL;DR — Đừng bảo Claude Code viết code ngay. Dùng ba giai đoạn: Think (hiểu codebase), Plan (thiết kế giải pháp), Execute (triển khai từng bước). Pattern này rẻ hơn 65% và cho ra kết quả đúng ngay lần đầu. Nhảy đến framework

💰 Phép tính đơn giản:

Không có Think-Plan-Execute: 10 tin nhắn, $6.50, 20+ phút sửa lỗi

Có Think-Plan-Execute: 6 tin nhắn, $2.30, đúng ngay lần đầu

Rẻ hơn 65%. Xem chi tiết →

Trong bài này

  1. Vấn đề khi nhảy thẳng vào Execute
  2. Ba giai đoạn: Think, Plan, Execute
  3. Token Economics: tại sao tiết kiệm 65%
  4. Ví dụ thực tế: Database Migration
  5. Điều chỉnh theo độ lớn task
  6. Công cụ sẵn có của Claude Code
  7. 4 Anti-patterns cần tránh

Đa số developer dùng Claude Code như bói toán. Ném request mơ hồ, hy vọng điều tốt nhất, rồi mất 20 phút sửa output.

Tôi cũng từng vậy. Rồi tôi nhận ra những phiên tốt nhất — khi Claude cho ra kết quả chuẩn ngay lần đầu — đều theo cùng một cấu trúc ba giai đoạn. Tôi gọi nó là Think-Plan-Execute.


Vấn Đề: Nhảy Thẳng Vào Execute

Đây là phiên điển hình:

Bạn: "Refactor auth module sang dùng JWT"
Claude: *bắt đầu viết code ngay*
Claude: *chọn sai library*
Bạn: "Không, dùng jose chứ không phải jsonwebtoken"
Claude: *viết lại nửa code*
Claude: *đặt middleware sai chỗ*
Bạn: "Cái đó phải nằm trong src/middleware/, không phải src/auth/"
Claude: *di chuyển mọi thứ, hỏng imports*

Năm tin nhắn, tốn $3, và bạn mới chỉ ở điểm xuất phát lẽ ra phải đạt từ tin nhắn đầu. Vấn đề không phải Claude Code — mà là bạn bảo nó execute trước khi nó hiểu bài toán.


Ba Giai Đoạn

Giai đoạn 1: Think (Hiểu Bài Toán)

Trước khi bảo Claude Code thay đổi bất cứ gì, hãy bảo nó think về trạng thái hiện tại. Đây là bước xây dựng shared context.

"I need to add JWT authentication to our Express API. Before making
any changes, analyze the current auth implementation:
- Read src/auth/ and summarize the current approach
- Read src/middleware/auth.ts and explain how requests are validated
- Check package.json for existing auth-related dependencies
- List all routes that currently require authentication
Don't change anything yet. Just help me understand what we're working with."

Giai đoạn này rẻ (đọc file tốn rất ít) nhưng cực kỳ giá trị. Claude Code xây dựng mental model về hệ thống. Bạn kiểm tra model đó có đúng không. Không tốn token vào implementation sai.

Key phrases cho giai đoạn Think — copy ngay:

"Before making changes, analyze..."
"Don't change anything yet"
"Help me understand the current state"
"Read and summarize..."

Giai đoạn 2: Plan (Thiết Kế Giải Pháp)

Khi Claude Code đã hiểu trạng thái hiện tại, bảo nó lập kế hoạch trước khi viết code.

"Great analysis. Now let's plan the JWT migration. Using the jose library
(it's already in package.json):
1. What files need to change?
2. What's the order of changes to avoid breaking things?
3. What are the edge cases we need to handle?
4. Write a step-by-step implementation plan.
Don't write code yet — just the plan."

Claude Code tạo ra plan có cấu trúc. Bạn review. Bắt lỗi sớm. Điều chỉnh nếu cần. Chi phí chỉ bằng một phần nhỏ so với viết lại code.

Key phrases cho giai đoạn Plan — copy ngay:

"Write a step-by-step plan"
"What's the order of changes?"
"Don't write code yet — just the plan"
"What edge cases should we handle?"

💡 Shortcut sẵn có: Claude Code có Plan Mode (/plan) khóa thực thi code cho đến khi bạn approve plan. Dùng như shortcut cho giai đoạn Plan. Cách dùng Plan Mode →

Kể cả không dùng Plan Mode, bạn vẫn đạt được lợi ích tương tự bằng cách explicit trong prompt.


Thử ngay: Mở terminal, chạy claude, rồi gõ: “Before making any changes, analyze the current structure of [project của bạn]. Don’t change anything yet.” Chỉ một câu thôi mà khác biệt hoàn toàn.


Giai đoạn 3: Execute (Triển Khai Chính Xác)

Giờ bạn execute, từng bước một, theo đúng plan.

"Let's execute the plan. Start with step 1: Create the JWT utility
functions in src/auth/jwt.ts. Use the jose library's SignJWT and
jwtVerify. Include functions for:
- generateToken(userId, role)
- verifyToken(token) → returns payload or throws
- refreshToken(existingToken) → returns new token
Follow our existing patterns in src/auth/password.ts for error handling."

Lưu ý prompt cụ thể đến mức nào. Claude Code biết chính xác cần tạo gì, đặt ở đâu, và theo pattern nào. Plan đã giải quyết hết sự mơ hồ. Execute chỉ là triển khai.

📬 Muốn nhận tips như này mỗi tuần? Một email. Tips Claude Code thực tế. Không lan man. Đăng ký AI Developer Weekly →


Tại Sao Cách Này Hiệu Quả: Token Economics

Pattern Think-Plan-Execute không chỉ cho code tốt hơn — nó thực sự rẻ hơn.

Không có pattern:

BướcTin nhắnChi phí
Request ban đầu (mơ hồ)1$0.30
Fix chọn sai library2$0.80
Fix đặt sai file2$1.20
Fix broken imports3$2.40
Hoàn thiện version cuối2$1.80
Tổng10$6.50

Cùng task với pattern:

Giai đoạnTin nhắnChi phí
Think (phân tích)1$0.20
Plan (thiết kế)2$0.60
Execute (triển khai)3$1.50
Tổng6$2.30

Bạn tốn thêm một chút cho thinking và planning, nhưng tiết kiệm rất nhiều nhờ không phải làm lại. Tổng rẻ hơn 65%.


Ví Dụ Thực Tế: Database Migration

Đây là phiên thật tuần trước khi tôi dùng pattern này để migrate PostgreSQL schema.

Giai đoạn Think

"We need to add multi-tenancy to our database. Before any changes:
1. Read the current schema in prisma/schema.prisma
2. List all models that reference User
3. Check if we have any raw SQL queries in src/db/
4. Summarize the current data access patterns"

Claude Code báo lại: 12 models, 4 model có relation trực tiếp với User, 2 raw SQL queries trong /db/reports.ts, và toàn bộ data access đi qua Prisma.

Giai đoạn Plan

"Good. Plan the multi-tenancy migration using a 'tenantId' column
approach (not separate schemas). Requirements:
- Every table gets a tenantId column
- All Prisma queries must filter by tenantId
- The raw SQL in reports.ts needs manual updating
- Migration must be backwards-compatible (existing data gets a default tenant)
- Plan the order of changes to avoid foreign key issues"

Claude Code tạo plan 7 bước. Tôi phát hiện một vấn đề — nó plan thêm tenantId vào bảng AuditLog, bảng này nên là cross-tenant để admin xem được tất cả. Chúng tôi điều chỉnh plan trước khi viết một dòng code nào.

Giai đoạn Execute

"Execute step 1: Add tenantId to the Prisma schema for these models:
User, Project, Task, Comment, File. Make it required with a default
value of 'default-tenant'. Add an index on tenantId for each table."

Mỗi bước đều sạch, tập trung, và đúng ngay lần đầu. Toàn bộ migration mất 12 tin nhắn thay vì 30+ nếu dùng kiểu “cứ làm đi.”


Điều Chỉnh Pattern Theo Độ Lớn Task

Không phải task nào cũng cần cả ba giai đoạn. Nguyên tắc của tôi:

Độ lớnVí dụCách tiếp cận
Siêu nhỏ”Fix typo này”Execute trực tiếp
Nhỏ”Thêm log statement”Execute trực tiếp
Trung bình”Thêm validation cho form”Plan → Execute
Lớn”Refactor auth sang JWT”Think → Plan → Execute
Siêu lớn”Thêm multi-tenancy”Think → Plan → Execute (nhiều vòng)

Với task trung bình, bạn có thể bỏ qua Think nếu đã hiểu rõ codebase. Với task siêu lớn, bạn có thể chạy nhiều vòng Think-Plan-Execute, mỗi vòng cho một component.


Công Cụ Sẵn Có Của Claude Code Cho Pattern Này

Claude Code có các tính năng map trực tiếp với từng giai đoạn:

Giai đoạn Think:

  • Prompt thường với “analyze”, “read”, “summarize”
  • AI đọc files và xây dựng understanding

Giai đoạn Plan:

  • /plan — Kích hoạt Plan Mode, ngăn thực thi code
  • Think mode với extended thinking cho reasoning phức tạp

Giai đoạn Execute:

  • Interactive mode thông thường cho implementation từng bước
  • Full auto mode cho execution đã được plan kỹ

Insight chính: bạn không cần tính năng built-in để dùng pattern. Pattern là về kỷ luật prompting của bạn, không phải toggles và settings.


Anti-Patterns Cần Tránh

1. Bỏ qua Think cho thay đổi “đơn giản” nhưng thực ra không đơn giản. “Đổi tên User model thành Account” nghe đơn giản. Nhưng nó ảnh hưởng mọi file reference đến User. Think trước.

2. Plan quá rộng. “Plan toàn bộ kiến trúc ứng dụng” quá mơ hồ. Plan từng component một. Mỗi giai đoạn Plan nên tạo ra plan bạn có thể execute trong 3-5 bước.

3. Lệch khỏi plan trong Execute. Bạn đã có plan. Theo nó. Nếu phát hiện điều bất ngờ trong execution, dừng lại. Quay về Plan. Điều chỉnh. Rồi tiếp tục execute.

4. Gộp các giai đoạn trong một prompt. “Phân tích auth module rồi viết lại dùng JWT” đặt Think và Execute trong cùng một prompt. Claude lướt qua phân tích và lao vào implementation. Tách chúng ra.

Muốn thêm mẹo workflow? Xem Claude Code Tips.


Bài Học Chính

  1. Think trước Plan, Plan trước Execute. Mỗi giai đoạn giảm rủi ro và chi phí cho giai đoạn tiếp.
  2. Giai đoạn Think là bảo hiểm rẻ nhất. Đọc file tốn vài cent. Viết lại code tốn vài dollar.
  3. Plan bắt lỗi thiết kế trước khi chúng thành lỗi code. Review plan trong 30 giây; review generated code trong 30 phút.
  4. Điều chỉnh độ sâu theo kích thước task. Task nhỏ nhảy thẳng vào Execute. Task lớn cần cả ba giai đoạn.
  5. Dùng “Don’t change anything yet” làm câu thần chú. Nó ép Claude vào analysis mode và ngăn execution sớm.

Pattern này đã trở nên tự nhiên đến mức tôi không cần nghĩ về nó nữa. Nó đơn giản là cách tôi làm việc với Claude Code. Và kết quả tự nó nói lên tất cả: chất lượng cao hơn, chi phí thấp hơn, ít frustration hơn.

🚀 Thử ngay bây giờ:

Mở terminal và chạy:

Terminal window
claude

Rồi gõ:

Before making any changes, analyze the current structure of this project.
Don't change anything yet.

Bạn sẽ thấy sự khác biệt ngay từ tin nhắn đầu tiên.


📬 Nhận tips Claude Code hàng tuần. Một email mỗi tuần. Tips thực tế, không lan man. Đăng ký AI Developer Weekly →


Đọc Tiếp


Pattern Think-Plan-Execute được trình bày chi tiết trong Phase 6: Thinking & Planning của Claude Code Mastery course.