TL;DR

Ngày 16 tháng 4 năm 2026, Anthropic thêm một constraint vào system prompt của Claude Code: "giữ text giữa các tool call trong 25 từ hoặc ít hơn." Bốn ngày sau họ revert sau khi xác nhận điểm benchmark intelligence giảm 3% trên Sonnet 4.6, Opus 4.6, và Opus 4.7. Một instruction. Downstream effect trên toàn prompt. Cách sửa không phải là thêm instruction - mà là cấu trúc đúng. Đây là template 9-section đứng sau mọi system prompt Claude sống sót trong production.

Tại Sao Hầu Hết System Prompt Claude Thất Bại

Hầu hết prompt là tài liệu personality, không phải hợp đồng vận hành. Người viết đổ mọi behavior mong muốn vào một khối text và hy vọng Claude tự tìm ra thứ tự ưu tiên. Ba ngày sau, output trôi dạt, edge case lọt ra ngoài, và một đoạn nữa được thêm vào. Prompt phình to. Chất lượng vẫn vậy.

Các prompt được ship đọc như hợp đồng. Chúng đặt tên role rõ ràng. Behavior được phát biểu như lệnh thay vì gợi ý. Các failure mode mà model phải tránh được chỉ định rõ tên, không phải ngụ ý.

Claude xử lý nội dung system prompt với positional weighting - nội dung gần đầu có ảnh hưởng mạnh hơn đến base behavior. Hard constraint bị chôn vùi sẽ bị giảm trọng số. Thứ tự quan trọng hơn khối lượng. Prompt 3.000 từ có thể thua một prompt 400 từ được cấu trúc đúng.

Ba Con Số Giải Thích Cấu Trúc

  • Giảm 23% out-of-schema response khi các section được sắp xếp theo thứ tự role → constraints → format → examples → behavior, so với bất kỳ thứ tự nào khác. Được test trên 200 request.

  • Cải thiện 30% chất lượng response khi các data payload lớn được đặt ở đầu prompt, phía trên instruction và query. Được Anthropic docs xác nhận cho input 20k+ token.

  • Giảm 30-50% hallucination trong structured output khi instruction về uncertainty được rõ ràng — nói Claude xuất null thay vì đoán. Một contract review agent production đo được mức giảm 40% chỉ từ bổ sung này.

Template 9-Section

Mỗi section xứng đáng vị trí của nó. Bỏ bất kỳ section nào và prompt sẽ cuối cùng trôi dạt.

1. Role anchor

Một câu. Claude là ai trong bối cảnh này. Bao gồm một mảnh chuyên môn cụ thể thu hẹp behavior. "You are a helpful assistant" không ngụ ý ý kiến hay phương pháp. "Bạn là senior copy editor đã dành hai mươi năm cắt bỏ văn xuôi marketing xuống những từ cốt lõi" ngụ ý cả hai. Role anchor là dòng quan trọng nhất trong prompt.

2. Context bridge

Những gì Claude đọc trước khi làm bất cứ thứ gì — file, memory, output trước. Nói rõ với Claude: "Đọc những thứ này trước. Nếu bất kỳ thứ nào thiếu, dừng lại." Không có section này, Claude tạo output mà không có input cần thiết — im lặng, mỗi lần.

3. Operating principles

Ba đến bảy behavior không thể thương lượng, được diễn đạt như lệnh. Bài test: bạn có thể viết một test case duy nhất pass hoặc fail không? "Phản bác các câu trả lời mơ hồ. Không bao giờ chấp nhận 'còn tùy' mà không chỉ định tùy vào cái gì" thì pass được. "Hãy hữu ích và chính xác" thì không. "Hãy hữu ích" không thể kiểm tra.

4. Workflow

Khi task có nhiều giai đoạn, hãy nêu rõ chúng. Đánh số. Định nghĩa mục tiêu của từng giai đoạn. Bỏ qua section này chỉ khi task là single-shot: một input, một output, không có bước trung gian.

5. Examples

Hai minh họa cụ thể: một tốt, một xấu. Kèm một dòng "TẠI SAO" giải thích sự khác biệt. Examples là section bị sử dụng ít nhất trong production prompt. Không có chúng, Claude respond trừu tượng với mô tả trừu tượng. Bốn đến sáu dòng minh họa literal là cách sửa.

6. Constraints

Từ bạn không bao giờ dùng. Pattern bạn tránh. Behavior làm disqualify output. Đây là nơi bạn mã hóa negative knowledge — các failure mode bạn đã thấy. Prompt không có constraints trôi về trung bình thống kê của training data, điếu đó hiếm khi là những gì production cần.

7. Output format

Cấu trúc chính xác của response. Với structured output: schema cụ thể với ví dụ, không phải "respond in JSON." Với human-facing output: "Ba section, heading dạng sentence-case, không có preamble" tốt hơn "Viết ba đoạn văn."

8. Quality gates

Self-check Claude chạy trước khi deliver. Ba đến năm điều kiện có thể kiểm tra. "Trước khi respond, xác nhận: mọi claim đều có nguồn cụ thể, không có từ bị cấm xuất hiện, output khớp với format spec." Không có section này, bạn bắt lỗi sau khi Claude respond. Với nó, Claude bắt lỗi trước.

9. Critical reminders

Ba đến năm điều quan trọng nhất, được lặp lại. Claude đánh trọng số cao hơn cho instruction được lặp lại. Reminder section không phải là filler — đó là trọng số có chủ đích trên những thứ thất bại thường xuyên nhất. Chọn failure mode tệ nhất của bạn và lặp lại ở cuối.

Năm Hình Dạng Của Cùng Một Pattern

Template này scale cho mọi loại công việc. Pattern ổn định. Trọng tâm thay đổi.

  • Research analyst: Workflow nặng (5 giai đoạn) với quality gate giữa mỗi giai đoạn. Không có gate, model lướt qua các giai đoạn và tạo ra tóm tắt chung chung.

  • Creative director: Section constraints chống lại bản năng tệ nhất của model — ngôn ngữ taste mơ hồ. Constraint phải cụ thể hơn failure mode mà nó ngăn chặn.

  • Reply generator: Prompt ngắn, bị chiếm ưu thế bởi constraints. Style mimicry cần danh sách từ bị cấm và quality gate "đọc to lên — nếu nghe như press release, viết lại." Không phải workflow.

  • Text humanizer: Section workflow làm việc nặng nhất. Bảy detection pass rõ ràng có nghĩa là model không thể bỏ bước. Không có pass được đánh số, nó làm ba rồi gọi là xong.

  • Content creator: Bước lựa chọn format trước khi drafting. Lựa chọn nhị phân giữa article và thread ngăn output hybrid không fit với format nào.

Lưu ý: Claude Opus 4.7 interpret instruction theo nghĩa đen hơn Opus 4.6. "CRITICAL: You MUST use this tool" gây overtriggering. "Dùng tool này khi..." hoạt động đúng hơn.

Lint Checklist

  1. Role anchor đặt tên một stance cụ thể, không phải helper chung chung.

  2. Mỗi operating principle có thể kiểm tra — bạn có thể viết một test case duy nhất pass hoặc fail.

  3. Có ít nhất một cặp ví dụ xấu/tốt với dòng "TẠI SAO".

  4. Section constraints đặt tên từ, pattern, hoặc behavior cụ thể — không phải trừu tượng.

  5. Output format có thể được parse ngay cả khi người đọc không thể thấy prompt của bạn.

  6. Quality gate được viết như điều kiện có thể kiểm tra, không phải nguyện vọng.

  7. Reminder lặp lại failure mode bạn thực sự đã thấy, không phải diễn đạt lại chung chung.

  8. Mỗi section xứng đáng vị trí của nó. Nếu bạn có thể xóa một section và prompt vẫn ra output đúng, hãy xóa nó.

Mỗi Lần Một Thay Đổi

Lấy prompt Claude được dùng nhiều nhất của bạn. Chạy nó theo 8-point lint ở trên. Tìm section thất bại tệ nhất, viết lại, và ship thay đổi.

Đừng viết lại toàn bộ prompt cùng một lúc. Sự cố tháng 4 năm 2026 đã chứng minh rằng thêm bất kỳ instruction nào đều có downstream effect - và điều đó áp dụng cho prompt của bạn cũng vậy. Mỗi lần một section. Đo sau mỗi thay đổi. Evaluation của bạn cần các session kéo dài ít nhất 30 phút công việc thực. Bất cứ thứ gì ngắn hơn sẽ cho bạn sự tự tin sai.

Via: Anthropic Engineering - April 23 Postmortem, Claude Prompting Best Practices, Unprompted Mind, How Claude Code Builds a System Prompt.