Nó làm gì
bootstrap-glossary đọc bộ từ vựng mà một codebase đã cam kết theo: tên type, class và table
trước, rồi tên module và thư mục, rồi tên hàm trên các bề mặt public, rồi giá trị enum, rồi những
từ lặp lại trong comment và commit message. Nó chuyển các thuật ngữ có tần suất cao nhất thành mục
từ điển. Mỗi mục có một định nghĩa rút ra từ cách code thật sự dùng thuật ngữ đó, một dòng
_Avoid_ gọi tên các từ đồng nghĩa mà nó đang thay thế, và một trích dẫn tới đúng file đã đọc ra
nó. Phần định nghĩa đi vào CONTEXT.md theo đúng format mà domain-modeling và các skill cùng
nhóm vốn đã trông đợi. Phần trích dẫn, chỗ nhập nhằng và trạng thái duyệt theo từng thuật ngữ đi
vào một file riêng, docs/agents/CONTEXT-review.md, để vệt bằng chứng không bị nhầm thành chính
bộ từ vựng.
Thứ nó thay thế là một buổi phỏng vấn domain năm mươi câu ở đầu một project brownfield, loại buổi
mà không ai rảnh một tiếng và câu trả lời rồi cũng lệch khỏi thứ code thật sự làm. Nhưng bài toán
khó hơn mà nó được dựng lên để chống thì kín đáo hơn: một bộ từ điển do agent viết mà trông như đã
được xác nhận còn tệ hơn không có từ điển nào, vì các session sau sẽ coi văn xuôi nghe chắc chắn là
sự thật đã chốt. Nên skill này rút ra chứ không bịa ra, và nó đánh dấu mọi thuật ngữ là
UNREVIEWED cho tới khi chủ project nhìn qua. Dấu đó nằm ở chỗ nhìn thấy được, trong một header
mà mọi người đọc đều thấy, vì bản thân trường trạng thái duyệt không tồn tại ở bất cứ đâu khác
trong plugin mà nó nuôi, và chín skill phía sau nạp CONTEXT.md mà không có cách nào biết trường
đó đang thiếu trừ khi header nói ra bằng chữ.
Khi nào Thomas gọi nó
| Tình huống trước mặt bạn | Gọi cái nào |
|---|---|
Một repo brownfield chưa có CONTEXT.md |
Chạy nó lúc bootstrap, một lần, thay cho một buổi phỏng vấn |
Một repo đã có CONTEXT.md do người viết |
Chạy nó để bồi thêm: giữ nguyên các mục đang có, và ghi mọi mâu thuẫn thành một quan sát nằm dưới mục sẵn có |
| Một thuật ngữ mà code dùng theo hai nghĩa không tương thích | Để nó rơi vào AMBIGUOUS thay vì đoán nghĩa nào mới đúng |
| Một thuật ngữ domain mà nghĩa của nó không đọc ra được từ cách dùng | Để nó rơi vào definition: UNKNOWN kèm trích dẫn, thay vì bịa một nghĩa |
Cần sẵn gì
Kiểm hình dạng của repo trước khi ghi bất cứ thứ gì: một bounded context thì một CONTEXT.md ở
gốc; nhiều context thì một CONTEXT-MAP.md ở gốc cộng một CONTEXT.md bên trong mỗi context.
Gieo một file gốc duy nhất lên một repo nhiều context sẽ trộn các bộ từ vựng không liên quan vào
một tài liệu mà mọi người đọc phía sau đều coi là chuẩn, mà repo brownfield lại chính là loại dễ
có nhiều context nhất. Đọc CONTEXT-FORMAT.md trước, vì domain-modeling và tám skill plugin
khác tiêu thụ CONTEXT.md theo một hình dạng cố định, và một lượt gieo từ code sẽ sai chi tiết
nếu thiếu nó.
Nó để lại gì
| Kết quả | Nơi nó nằm lại |
|---|---|
| Một thuật ngữ rút từ code, kèm định nghĩa nháp | CONTEXT.md, dưới ## Language, đánh dấu bằng chính bộ đếm trong header của file |
| Trích dẫn, từ đồng nghĩa và trạng thái duyệt của thuật ngữ đó | docs/agents/CONTEXT-review.md, đúng một file bất kể repo có bao nhiêu context |
| Một thuật ngữ chủ project đã kiểm | CONFIRMED <ngày> trong docs/agents/CONTEXT-review.md, kèm cập nhật bộ đếm trong header của CONTEXT.md cho khớp |
| Một thuật ngữ code dùng theo hai nghĩa không tương thích | AMBIGUOUS trong docs/agents/CONTEXT-review.md, giữ cho nhìn thấy được thay vì xử lý bằng cách đoán |
Đang chạy đúng nếu
- Mọi mục trong
CONTEXT.mdtruy ngược được về một trích dẫn thật trongdocs/agents/CONTEXT-review.md. Một định nghĩa mà trích dẫn không chống lưng chính là kiểu hỏng mà skill này được dựng lên để tránh. - Header của
CONTEXT.mdnêu tỉ lệ đã duyệt bằng văn xuôi mà người đọc thấy được dù không biết trường đó tồn tại, ví dụ “23 terms · 0 CONFIRMED · 21 UNREVIEWED · 2 AMBIGUOUS.” - Các mục do người viết sẵn có được giữ nguyên; thứ gì code mâu thuẫn thì ghi lại thành một quan sát, không phải ghi đè.
- Chi tiết cài đặt và khái niệm lập trình chung không bao giờ lọt vào
CONTEXT.md, dù code có dùng chúng nhiều tới đâu. - Lượt duyệt của chủ project phủ các thuật ngữ
AMBIGUOUS, các định nghĩaUNKNOWN, và mười thuật ngữ tần suất cao nhất trước. Đó đúng là danh sách ngắn mà skill này tồn tại để đưa họ, thay vì bắt đọc lại từ đầu tới cuối.
Nó nằm ở đâu trong chuỗi
bootstrap-glossary chạy một lần, gọi đích danh, sớm trong đời một project brownfield, cùng nhóm
với các lượt bootstrap khác cũng gọi một lần và được chủ project duyệt: extract-standards cho quy
ước code và batch-triage cho một backlog thừa kế. Thomas sở hữu cả ba như những stage, để không
cái nào biến thành phần việc mà ai cũng tưởng người khác đã chạy. Khi các thuật ngữ đã CONFIRMED,
domain-modeling là chỗ chúng được mài sắc thêm. Việc của skill này kết thúc ở chỗ trao cho
domain-modeling một bộ từ vựng rút từ code đang có thật, chứ không phải một bộ từ vựng ai đó đoán
ra trong một buổi phỏng vấn.