Bốn thẻ bo tròn xếp chồng, mỗi thẻ chứa một nguyên tắc từ CLAUDE.md của Karpathy kèm một dòng mô tả: Suy nghĩ trước khi viết mã, Đơn giản là trên hết, Thay đổi có tính phẫu thuật, Thực thi dựa trên mục tiêu.
Guides & Insights

CLAUDE.md của Karpathy, được giải thích: Một tệp đằng sau một cuộc tìm kiếm kỹ năng

Tác giả

Rowan Sterling

Ngày đăng

Mô hình mới nhất · 20Xem tất cả mô hình →
Benchmark: Artificial Analysis · cập nhật hằng ngày
Quay lại tất cả bài viết

Trên Google Trends, trên toàn thế giới, trong bảy ngày qua và được đọc vào ngày 23 tháng 10 năm 2026, "karpathy skills" xuất hiện như một truy vấn đang tăng dưới từ khóa gốc "claude skills". Bất kỳ ai theo dõi tìm kiếm đó đều đến cùng một nơi: github.com/multica-ai/andrej-karpathy-skills, một kho lưu trữ hiển thị 222,612 sao trên GitHub, được đọc vào ngày 23 tháng 10 năm 2026. Phần mô tả của nó hoàn toàn không chứa từ skill. Nội dung là: "Một tệp CLAUDE.md duy nhất để cải thiện hành vi của Claude Code, được rút ra từ những quan sát của Andrej Karpathy về các cạm bẫy khi lập trình bằng LLM."

Khoảng cách giữa truy vấn và đối tượng không phải là một chi tiết kỹ thuật nhỏ. Một skill và một tệp CLAUDE.md là những cơ chế khác nhau thực hiện những công việc khác nhau, và gần như mọi khẳng định người ta đưa ra về kho lưu trữ này hoặc phụ thuộc vào việc biết đó là cái nào, hoặc ngầm giả định sai. Phần hướng dẫn bên trong là một tệp duy nhất. Kho lưu trữ bao quanh tệp đó còn có một tệp kê khai plugin và một thư mục nằm dưới skills, đây có lẽ là nguồn gốc của từ xuất hiện trong thanh tìm kiếm. Tách phần đóng gói khỏi phần nội dung thực chất là bước đi hữu ích đầu tiên ở đây.

Các con số, đều từ GitHub và được đọc vào ngày 23 tháng 10 năm 2026: 222.612 sao, 22.321 fork, được tạo ngày 27 tháng 1 năm 2026, lần push cuối ngày 20 tháng 4 năm 2026, giấy phép MIT. Cặp cuối cùng đó mới là điều đáng chú ý. Kho lưu trữ đã không nhận được lần push nào trong khoảng sáu tháng, và số lượng sao vẫn tiếp tục tăng.

Tệp thực hiện công việc; phần đóng gói giải thích thuật ngữ tìm kiếm.

Mở kho lưu trữ ra và danh sách tệp khiến sự không khớp dễ thấy ngay. Ở thư mục gốc có CLAUDE.md, và bên cạnh nó là CURSOR.md, EXAMPLES.md, một thư mục .cursor/rules chứa cùng các hướng dẫn dưới dạng quy tắc dự án Cursor, một thư mục .claude-plugin, và một thư mục skills/karpathy-guidelines. Cách cài đặt được README khuyến nghị là chợ plugin, và nó mô tả kết quả là làm cho "kỹ năng này khả dụng trên tất cả các dự án của bạn".

GitHub page for multica-ai/andrej-karpathy-skills showing the root file list, a right sidebar reading 222.6k stars and 22.3k forks, and the top of the README headed Karpathy-Inspired Claude Code Guidelines.

Vậy nên thuật ngữ tìm kiếm không hẳn là sai, mà đúng hơn là chưa chính xác. Có một thư mục skills. Có một plugin. Điều không có là một tập hợp các skill riêng biệt, mỗi cái đảm nhận một công việc khác nhau — tức là hình thái mà người ta thường muốn nói khi dùng cụm skill pack: một thư mục chứa SKILL.md và mọi tệp hỗ trợ mà khả năng đó cần, được gọi ra để thực hiện một tác vụ. Ở đây, toàn bộ phần hướng dẫn là một tài liệu duy nhất gồm các chỉ dẫn thường trực, và plugin tồn tại để đưa tài liệu đó vào một dự án.

Việc sự phân biệt đó có quan trọng với bạn hay không còn tùy vào điều bạn muốn tìm từ lần tìm kiếm này. Nếu bạn đang tìm một bộ công cụ, thì đây không phải là một bộ công cụ. Nếu bạn muốn một cuốn sổ quy tắc ngắn gọn có thể thay đổi cách một coding agent hành xử trong toàn bộ một dự án, thì đây chính xác là thứ đó, và đáng để hiểu vì sao có người lại viết nó thành một tệp thay vì thành các kỹ năng.

Những khiếu nại mà nó được viết để phản bác

Nguồn được README nêu rõ là một bài đăng của Andrej Karpathy trên X, mà README trích dẫn cho ba lời phàn nàn về cách các mô hình viết mã. Chúng đáng được đọc trọn vẹn, vì bốn nguyên tắc gần như tương ứng một-một với chúng.

Điều đầu tiên: các mô hình "đưa ra những giả định sai thay cho bạn và cứ thế chạy theo chúng mà không kiểm tra," và "không quản lý sự bối rối của mình, không tìm cách làm rõ, không nêu bật những mâu thuẫn, không trình bày các đánh đổi, không phản biện khi lẽ ra phải làm vậy." Hãy chú ý đến điều đang được mô tả. Đây không phải là lời phàn nàn về những câu trả lời sai. Đây là lời phàn nàn về những câu trả lời sai trôi chảy được đưa ra không chút do dự, nơi sự không chắc chắn lẽ ra phải tạo ra một câu hỏi lại tạo ra mã đầy tự tin.

Điểm thứ hai: họ “rất thích làm phức tạp hóa mã nguồn và API, làm phình to các lớp trừu tượng, không dọn dẹp mã chết… triển khai một cấu trúc cồng kềnh dài hơn 1000 dòng trong khi chỉ 100 dòng là đủ.” Ai từng yêu cầu một tính năng mà nhận lại cả một framework đều thấy điều đó quen thuộc.

Điều thứ ba tinh tế hơn và, đối với bất kỳ ai đang xem xét các diff, là tốn kém nhất: chúng “đôi khi vẫn thay đổi/xóa các chú thích và mã mà chúng không hiểu đầy đủ như một tác dụng phụ, ngay cả khi điều đó không liên quan đến nhiệm vụ.” Một chỉnh sửa không liên quan đến một chú thích thì tự nó nhỏ. Nhưng khi nhân rộng trên toàn bộ cơ sở mã, đó là cách hàng đợi đánh giá đầy ắp những thay đổi không ai yêu cầu, và là cách một chú thích giải thích một workaround biến mất trước khi bất kỳ ai biết vì sao workaround đó tồn tại.

Bốn nguyên tắc, và phép thử mà mỗi nguyên tắc để lại

Tệp mã hóa bốn nguyên tắc. Mỗi nguyên tắc đi kèm một bộ quy tắc ngắn, và hai trong số đó nêu rõ một bài kiểm tra một dòng mà bạn có thể áp dụng cho một diff mà không cần cài đặt bất cứ thứ gì. Các quy tắc là nơi thể hiện đặc tính của tệp.

Suy nghĩ trước khi viết mã

Chỉ dẫn của tiêu đề là “Đừng giả định. Đừng che giấu sự mơ hồ. Hãy làm rõ các đánh đổi.” Bên dưới đó: nêu rõ các giả định và hỏi thay vì đoán; trình bày nhiều cách hiểu khi yêu cầu còn mơ hồ; phản biện khi có một cách tiếp cận đơn giản hơn; dừng lại khi thấy mơ hồ, gọi tên điều chưa rõ và yêu cầu làm rõ. Điều này nhắm thẳng vào lời phàn nàn đầu tiên. Cơ chế không phải là “cẩn thận hơn” — mà là biến những lựa chọn âm thầm thành những lựa chọn hữu hình, để người đánh giá có thể phản đối trước khi mã tồn tại thay vì sau đó.

Ưu tiên sự đơn giản

Quy tắc là mã tối thiểu giải quyết được vấn đề, không có gì mang tính suy đoán: không có tính năng nào vượt quá yêu cầu, không trừu tượng hóa cho mã chỉ dùng một lần, không có tính linh hoạt hay khả năng cấu hình mà không ai yêu cầu, không xử lý lỗi cho các tình huống không thể xảy ra, và “nếu 200 dòng có thể rút gọn còn 50, hãy viết lại nó”. Phép thử là một câu hỏi duy nhất — liệu một kỹ sư cấp cao có nói rằng thứ này quá phức tạp không? — đó là một quyết định dựa trên đánh giá, và công khai là như vậy.

Thay đổi phẫu thuật

Ở đây, tệp tách chỉ dẫn thành hai phần, và đó là điều hữu ích nhất trong đó. Khi chỉnh sửa mã hiện có: đừng cải thiện mã, chú thích hay định dạng lân cận; đừng tái cấu trúc thứ không hỏng; hãy khớp với phong cách hiện có ngay cả khi bạn sẽ làm khác đi; hãy nêu ra mã chết không liên quan thay vì xóa nó. Khi thay đổi của chính bạn tạo ra các phần mồ côi: hãy xóa các import, biến và hàm mà thay đổi của bạn làm cho không còn được dùng, nhưng cứ để yên mã chết có từ trước trừ khi được yêu cầu. Tiêu chí là mọi dòng thay đổi đều truy vết trực tiếp về yêu cầu.

Thực thi theo định hướng mục tiêu

Xác định tiêu chí thành công và lặp cho đến khi được xác minh. README trình bày quá trình chuyển đổi dưới dạng các cặp. Thay vì "thêm xác thực", hãy viết kiểm thử cho các đầu vào không hợp lệ rồi làm cho chúng vượt qua. Thay vì "sửa lỗi", hãy viết một kiểm thử tái hiện lỗi đó rồi làm cho nó vượt qua. Thay vì "tái cấu trúc X", hãy bảo đảm kiểm thử vượt qua trước và sau. Đối với công việc nhiều bước, nó yêu cầu một kế hoạch ngắn trong đó mỗi bước nêu rõ cách xác minh của chính nó. README trích dẫn Karpathy một lần nữa ở đây: "LLMs cực kỳ giỏi việc lặp cho đến khi chúng đạt được các mục tiêu cụ thể… Đừng bảo nó phải làm gì, hãy đưa cho nó tiêu chí thành công và xem nó tiến hành."

Một tệp, một kỹ năng và một plugin là ba thứ khác nhau

Đáng để nói chính xác về cơ chế, vì cách hoạt động thực tế khác nhau. CLAUDE.md là một tệp chỉ dẫn dự án: văn bản mà Claude Code đọc như ngữ cảnh thường trực cho một kho mã, hiện diện dù có ai yêu cầu nó trong lượt này hay không. Một skill là một thư mục có SKILL.md mô tả thời điểm nên dùng khả năng đó, được tải khi một tác vụ cần đến nó và không tải trước đó. Một plugin là một gói phân phối, được cài đặt qua marketplace, có thể mang theo skill, lệnh và các thành phần khác. Những khác biệt này là về thời điểm chỉ dẫn đi vào ngữ cảnh và ai quyết định, không phải về chất lượng.

Theo nghĩa đó, CLAUDE.md là cái thô nhất trong ba. Nó luôn bật trong dự án đó, áp dụng cho mọi tác vụ trong dự án, và chiếm ngữ cảnh ở mọi lượt bất kể công việc là sửa lỗi chính tả một dòng hay một cuộc migration. README của chính tệp này thừa nhận cái giá đó trong một mục có tên Tradeoff Note: các hướng dẫn nghiêng về thận trọng hơn là tốc độ, và với những tác vụ tầm thường — sửa lỗi chính tả đơn giản, những thay đổi một dòng rõ ràng — bạn nên dùng phán đoán. Nó nói rằng mục tiêu là giảm những sai lầm tốn kém trong công việc không tầm thường, chứ không phải làm chậm những việc đơn giản.

Đó là một mô tả công bằng về những gì một tệp chỉ dẫn thường trực có thể làm. Nó không thể bổ sung một năng lực mà mô hình không có. Nó chỉ có thể làm cho hành vi hiện có của mô hình trở nên dễ xảy ra hơn hoặc ít xảy ra hơn. Đó là lý do tệp được viết dưới dạng các ràng buộc — đừng làm điều này, hãy hỏi trước khi làm điều kia — thay vì như một lời khuyến khích trở nên tốt hơn.

222.612 ngôi sao đo lường điều gì

Họ đo lường sự chú ý. Đó không phải là một sự gạt đi và cũng không phải là chuyện nhỏ: một kho mã được tạo vào tháng 1 năm 2026 và được push lần cuối vào tháng 4 đã đạt 222.612 sao và 22.321 lượt fork tính đến ngày 23 tháng 10 năm 2026, trên GitHub, được đọc vào ngày hôm đó, nghĩa là nó đã được chia sẻ rộng rãi và được fork bởi những người muốn có một bản sao của riêng mình. Số lượng sao là một chỉ báo thay thế hợp lý cho việc có bao nhiêu người thấy một thứ gì đó đáng để đánh dấu.

Nó không phải là thước đo thay thế cho hiệu quả, và kho lưu trữ không giả vờ điều ngược lại. Điều không được công bố ở bất kỳ đâu trong đó: bất kỳ đánh giá chuẩn nào so sánh kết quả có và không có tệp, bất kỳ phương pháp luận nào để đo xem nó có hoạt động không, và bất kỳ so sánh nào với nhóm đối chứng. Không có so sánh trước và sau trên một cơ sở mã thực tế, không có nghiên cứu người đánh giá, không có tỷ lệ sự cố. Một tệp như thế này là một giả thuyết về hành vi của mô hình, được phát biểu một cách tao nhã, và chưa ai chạy thử nghiệm.

A single card pairing the 222,612 GitHub star figure with four rows stating that no benchmark, no methodology and no control comparison are published for the file.

Thay vào đó, README đưa ra một mục có tên How to Know It's Working, liệt kê bốn điều bạn có thể quan sát thấy: ít thay đổi không cần thiết hơn trong diff, ít việc viết lại hơn do phức tạp hóa quá mức, các câu hỏi làm rõ đến trước khi triển khai thay vì sau khi mắc lỗi, và các pull request tối giản, gọn gàng. Đó là những tín hiệu hợp lý. Chúng cũng chính xác là những gì bạn sẽ viết nếu bạn chưa đo lường được gì, và chúng do chính người đang áp dụng tệp tự báo cáo. Hãy đọc chúng như một danh sách kiểm tra để đánh giá tệp trong kho lưu trữ của riêng bạn, chứ không phải bằng chứng rằng nó đã đạt yêu cầu.

Bạn thực sự gõ gì để cài đặt nó

README đưa ra hai cách. Cách được khuyến nghị chạy bên trong Claude Code: thêm marketplace, rồi cài plugin, sau đó các hướng dẫn sẽ hiện diện trên mọi dự án thay vì theo từng kho lưu trữ. Cách thứ hai là theo từng dự án: tải tệp CLAUDE.md thô vào một kho lưu trữ mới, hoặc nối nó vào một kho lưu trữ đã có. Ngoài ra còn có một quy tắc dự án Cursor đã được commit, nên cùng những hướng dẫn đó cũng áp dụng khi thư mục được mở trong Cursor — một chi tiết cho thấy tệp được viết để có thể dùng được qua nhiều công cụ đọc tệp chỉ dẫn cấp dự án, chứ không gắn với trình tải của một nhà cung cấp cụ thể.

Một điểm chưa ổn, đáng để nêu ra vì bạn sẽ gặp phải nếu làm theo README đúng từng bước. Lệnh marketplace có tên là forrestchang/andrej-karpathy-skills, trong khi URL kho lưu trữ ở đầu trang là multica-ai/andrej-karpathy-skills. Cả hai chuỗi đều xuất hiện trong cùng một README, đọc ngày 23 tháng 10 năm 2026. Tôi thấy được sự không khớp và không thể nói cho bạn biết vì sao nó tồn tại, nên lời khuyên trung thực là hãy thử đường dẫn còn lại nếu một đường dẫn thất bại, và coi một trong hai chuỗi là đã lỗi thời.

Một điểm khác cần chú ý trên trang chính: kho lưu trữ được duy trì bởi multica-ai, và khối trích dẫn mở đầu trong README quảng bá Multica, “một nền tảng mã nguồn mở để chạy và quản lý các agent lập trình với những kỹ năng có thể tái sử dụng.” Đó là một công bố hợp lệ, đồng thời cũng là manh mối cho thấy vì sao cách đóng gói lại trông như hiện tại. Một dự án quan tâm đến các kỹ năng có thể tái sử dụng có khả năng sẽ phát hành hướng dẫn của riêng mình dưới dạng một thứ có thể cài đặt, và plugin chính là thứ đó.

Sử dụng nó mà không kế thừa những giả định của nó

Phần Tùy chỉnh là phần mà hầu hết người đọc bỏ qua. Tệp này được thiết kế để được hợp nhất với các hướng dẫn dành riêng cho dự án thay vì thay thế chúng, và các ví dụ mà nó đưa ra rất cụ thể: sử dụng chế độ strict của TypeScript, mọi endpoint API đều phải có kiểm thử, tuân theo các mẫu xử lý lỗi hiện có trong một tệp cụ thể. Đó không phải là trang trí. Đó là sự khác biệt giữa một cuốn sổ quy tắc chung chung và một bộ hướng dẫn biết mã của bạn nằm ở đâu.

Có một lý do thực tế để hợp nhất thay vì xếp chồng. Nếu bạn dán tệp vào nguyên trạng và dự án của bạn có các quy ước riêng, hai bộ hướng dẫn có thể mâu thuẫn với nhau, và việc một mô hình phải dung hòa một mâu thuẫn chính là sự nhầm lẫn mà nguyên tắc đầu tiên đang cố gắng loại bỏ. Viết các quy ước của bạn vào cùng một tệp, bằng cùng một giọng điệu, giữ cho bề mặt hướng dẫn đủ nhỏ để có thể soát xét.

Và bạn nên kiểm toán nó. Đây là một tài liệu ngắn về chỉ dẫn hành vi sẽ áp dụng cho mọi yêu cầu trong kho lưu trữ. Câu hỏi đúng không phải là liệu 222.612 người có thể sai không — cách đặt vấn đề đó chẳng giải quyết được gì — mà là liệu từng quy tắc có khớp với một lỗi bạn thực sự đã thấy hay không. Nếu các diff của bạn chưa từng chứa những lần viết lại bình luận kiểu tiện tay, phần Surgical Changes chỉ làm bạn tốn ngữ cảnh mà chẳng được gì. Hãy xóa nó đi. Tệp này được cấp phép MIT và được tạo ra để chỉnh sửa.

Ở tầng sâu hơn, không điều nào trong số này thay đổi mô hình nào sẽ trả lời. Tệp CLAUDE.md định hình cách một yêu cầu được xử lý sau khi yêu cầu đó đến một mô hình; nó không nói gì về mô hình tiếp nhận yêu cầu đó. Quyết định thứ hai đó thuộc về bất cứ thứ gì nằm phía trước mô hình. Một cách để bố trí là dùng một endpoint tương thích OpenAI duy nhất mang hơn 200 mô hình dưới một khóa, với tính năng chuyển đổi dự phòng tự động giữa các nhà cung cấp và giá niêm yết của nhà cung cấp được chuyển tiếp với mức markup 0%. Chúng tôi lưu trữ mô hình; chúng tôi không tạo ra Claude Code, và không có gì trong kho lưu trữ của bạn mà chúng tôi có thể thấy.

OrcaRouter homepage with the headline One gateway. Every model. Your data stays yours., two buttons, a row of six metrics and a Python code sample calling a shared API endpoint.

Tìm kiếm sẽ vẫn nói "skills", vì đó là từ người ta dùng để chỉ thứ bạn cài đặt nhằm khiến một agent hành xử khác đi, và cách đóng gói quanh kho lưu trữ này cũng dùng từ đó. Sản phẩm là một tệp: một tài liệu chỉ dẫn thường trực, được viết để đối phó với ba lời phàn nàn cụ thể, với bốn nguyên tắc và một bộ kiểm tra bạn có thể áp dụng thủ công. Hãy đánh giá nó dựa trên việc những lời phàn nàn đó có giống với kho lưu trữ của bạn không. Đó là một câu hỏi hay hơn số sao, thứ vốn chỉ đo được bao nhiêu người có cùng phản ứng như bạn vừa có.