my-agent-crew

Quy ước code

Phiên bản: 0.20.0 · Cập nhật: 2026-10-14

1. Python

2. Web

3. Test

4. Cổng phải chạy trước khi commit

Tám cổng dưới đây là chính xác những gì CI chạy cho Python và web, theo đúng thứ tự trong .github/workflows/ci.yml. Chạy đủ cả tám ở máy trước khi đẩy; cổng nào bỏ qua thì CI sẽ là nơi phát hiện, và đó là lúc đắt nhất.

CI còn một job thứ ba, desktop-helper, trên runner macOS: scripts/desktop-helper-check.sh build và chạy test Swift của trình trợ giúp desktop. gates.sh không chạy job này; đổi gì dưới desktop-helper/ thì chạy script ấy trên một máy Mac trước khi đẩy.

Một lệnh chạy hết, dừng ở cổng đỏ đầu tiên và gọi tên nó:

./scripts/gates.sh

Danh sách dưới đây là để biết mỗi cổng làm gì và vì sao nó tồn tại; muốn chạy thì dùng script, vì danh sách nằm trong tệp thì không bỏ sót được, còn nằm trong đầu thì có.

uv sync
uv run ruff check .
uv run ruff format --check .     # ← dễ quên nhất: `ruff check` xanh không có nghĩa cổng này xanh
uv run playwright install chromium   # lần đầu, và sau khi gói Playwright đổi phiên bản
uv run pytest -q

cd web
npm ci                            # hoặc npm install khi đang phát triển
npm run typecheck
npm test
npx playwright install --with-deps chromium   # lần đầu thôi
npm run e2e                       # E2E_PORT=<cổng> npm run e2e khi checkout khác cũng đang chạy e2e
npm run bundle
git diff --exit-code --stat -- ../my_agent_crew/server/static

Hai cổng hay bị bỏ sót và vì sao:

Cổng Vì sao hay quên Dấu hiệu
ruff format --check . khác hẳn ruff check; một tệp lint sạch vẫn có thể sai định dạng in unformatted: File would be reformatted kèm diff (không phải Would reformat:)
git diff trên server/static bundle được commit, nên quên npm run bundle là CI đỏ dù code đúng diff khác rỗng ở my_agent_crew/server/static

Sửa định dạng bằng uv run ruff format . rồi chạy lại pytest — định dạng có đụng vào code.

Dev server của Playwright nghe ở cổng 4173 và, ngoài CI, được dùng lại nếu đã có ai nghe ở đó, nên hai checkout cùng chạy e2e trên một cổng thì lần chạy sau lặng lẽ test mã nguồn của lần chạy trước; E2E_PORT dời nó sang cổng khác. Vitest và Playwright đều ghim múi giờ Asia/Ho_Chi_Minh trong cấu hình của mình, nên ranh giới ngày (“Hôm nay”, “Hôm qua”) rơi cùng một chỗ trên máy và trên CI (chạy UTC); một test về ngày không tự đặt TZ.

5. Commit

6. Bí mật và dữ liệu cá nhân

7. Tài liệu

Câu hỏi mở