feat: add --all --run autopilot mode for instant write-and-test execution

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-07 16:45:45 +07:00
parent 2045c856e9
commit 6fc49787a9
3 changed files with 55 additions and 41 deletions
+26 -22
View File
@@ -10,38 +10,42 @@ Skill này là công cụ chính để tự động tạo ra file Unit Test cho
## Cách kích hoạt
Người dùng có thể kích hoạt linh hoạt theo các chế độ (từ 1 lệnh duy nhất cho toàn bộ dự án đến từng file đơn lẻ):
1. **🌟 Chế độ 1 Lệnh Duy Nhất Cho Toàn Bộ Dự Án (All-in-One Full Coverage Mode - Khuyên dùng cho dự án lớn)**:
1. **🌟 Chế độ Autopilot Khép Kín: Viết Xong Chạy Test Luôn (`--all --run` hoặc `--autopilot`)**:
```text
/laravel-unit-test --all
```
**Cơ chế cam kết không bỏ sót bất kỳ file nào:**
- **Giai đoạn 1 (Lập Manifest Kiểm Soát)**: Tự động quét toàn bộ `app/` (và `Modules/`), lọc ra tất cả các class có logic (Services, Actions, FormRequests, Rules, Jobs, Policies, Middlewares, Listeners, Observers, Repositories, Custom Casts). Lập file danh sách kiểm soát `tests/.test-manifest.json` (ví dụ: Tổng cộng 42 files).
- **Giai đoạn 2 (Thực Thi Tuần Tự & Theo Dõi Tiến Độ)**: Duyệt tuần tự từng class trong manifest (`[1/42]`, `[2/42]`,...), sinh test tương ứng và đánh dấu `[COMPLETED]`. Không bao giờ bị tràn context và có thể tiếp tục nếu bị gián đoạn.
- **Giai đoạn 3 (Tự Động Chạy Thử & Sửa Lỗi Ngay - Auto-Healing)**: Sinh xong file nào lập tức chạy `./test-runner.sh --filter=<Test>` cho file đó. Nếu FAIL -> Tự động đọc log lỗi và sửa lại test cho đến khi PASS 100%.
- **Giai đoạn 4 (Báo Cáo Nghiệm Thu Độ Phủ)**: Chạy `./test-runner.sh --coverage` và in bảng tổng kết: `42/42 files covered, 100% Passed, Code Coverage: > 80%`.
2. **Chế độ Hàng loạt theo Thư mục (Batch Directory Mode)**:
```text
/laravel-unit-test app/Services/
/laravel-unit-test --all --run
# Hoặc:
/laravel-unit-test app/Actions/
/laravel-unit-test --autopilot
```
*Chỉ với 1 lệnh duy nhất, Agent sẽ thực thi trọn vẹn quy trình 4-trong-1:*
- **Tự động Setup**: Kiểm tra dependencies & SQLite in-memory, tự cài đặt gói thiếu.
- **Tự động Quét**: Lập manifest toàn bộ class trong dự án `app/`.
- **Tự động Viết & Test Ngay**: Sinh test đến đâu -> Chạy test `./test-runner.sh` ngay đến đó.
- **Tự động Sửa Lỗi (Auto-Healing)**: Nếu test đỏ (Fail) -> Tự đọc log lỗi và sửa lại test cho đến khi XANH (Pass 100%).
- **Nghiệm thu**: Đo Code Coverage và in bảng tổng kết cuối cùng.
2. **Chế độ Viết Cho 1 File & Test Luôn (`--run`)**:
```text
/laravel-unit-test app/Services/PaymentService.php --run
```
*Sinh test cho class và lập tức chạy thử để xác nhận Pass 100% trước khi hoàn thành.*
3. **Chế độ Hàng loạt theo Thư mục (Batch Directory Mode)**:
```text
/laravel-unit-test app/Services/ --run
# Hoặc toàn bộ Actions:
/laravel-unit-test app/Actions/ --run
```
3. **Chế độ Theo Module / DDD (Module Mode)**:
4. **Chế độ Theo Module / DDD (Module Mode)**:
```text
/laravel-unit-test Modules/Order/
/laravel-unit-test Modules/Order/ --run
# Hoặc:
/laravel-unit-test app/Domains/Payment/
```
4. **Chế độ Quét & Phủ Test Toàn Dự Án (Untested Audit Mode)**:
```text
/laravel-unit-test --untested
/laravel-unit-test app/Domains/Payment/ --run
```
5. **Chế độ Theo Git Diff (Changed Files Mode - Dành Cho Pull Request)**:
```text
/laravel-unit-test --changed
/laravel-unit-test --changed --run
```
6. **Chế độ File đơn lẻ (Single File Mode)**:
+9 -9
View File
@@ -101,20 +101,20 @@ Mở Claude Code (`claude`) tại thư mục dự án và chạy skill:
```
Agent sẽ tự động kiểm tra `composer.json`, kiểm tra database test SQLite và tự cài đặt các package còn thiếu.
### Bước 3: Sinh Unit Test Tự Động
### Bước 3: Sinh Unit Test Tự Động & Chạy Test Ngay
Chỉ định class, thư mục, hoặc phủ toàn bộ dự án:
```bash
# 🌟 1 lệnh duy nhất phủ test toàn bộ dự án (cam kết không sót file):
/laravel-unit-test --all
# 🌟 1 lệnh duy nhất Autopilot: Tự động viết test cả dự án & TỰ CHẠY TEST LUÔN:
/laravel-unit-test --all --run
# Cho cả thư mục / module:
/laravel-unit-test app/Services/
# Sinh test cho 1 file & tự động chạy test kiểm tra ngay:
/laravel-unit-test app/Services/PaymentService.php --run
# Cho các file vừa sửa trên Git (trước khi tạo PR):
/laravel-unit-test --changed
# Cho cả thư mục / module & test luôn:
/laravel-unit-test app/Services/ --run
# Cho 1 class đơn lẻ:
/laravel-unit-test app/Services/PaymentService.php
# Cho các file vừa sửa trên Git & test luôn (trước khi tạo PR):
/laravel-unit-test --changed --run
```
### Bước 4: Chạy Kiểm Thử
+20 -10
View File
@@ -123,16 +123,26 @@ Trước khi viết bài test đầu tiên, hãy kiểm tra và cài đặt đ
Tùy vào nhu cầu thực tế, bạn chọn 1 trong 5 cách sau:
#### 🌟 Cách 1: 1 LỆNH DUY NHẤT PHỦ TOÀN BỘ FILE TRONG DỰ ÁN (`--all`)
Khi bạn muốn AI tự động viết test cho toàn bộ dự án từ A-Z mà đảm bảo không bỏ sót bất kỳ file nào:
#### 🌟 Cách 1: 1 LỆNH AUTOPILOT VIẾT TOÀN BỘ VÀ TỰ CHẠY TEST LUÔN (`--all --run`)
Khi bạn muốn AI tự động viết test cho toàn bộ dự án từ A-Z, **viết đến đâu tự chạy test đến đó và tự sửa lỗi nếu test fail**:
```text
/laravel-unit-test --all
/laravel-unit-test --all --run
# Hoặc:
/laravel-unit-test --autopilot
```
🎯 **Quy trình 4-trong-1 hoàn toàn tự động:**
1. **Tự động Setup**: Tự kiểm tra môi trường, cấu hình SQLite `:memory:` và tự cài packages nếu thiếu.
2. **Lập Manifest Kiểm Soát**: Quét toàn bộ `app/`, lập danh sách tất cả các class cần test (`tests/.test-manifest.json`).
3. **Viết & Chạy Test Ngay (Auto-Healing)**: Sinh xong file test nào -> Tự chạy ngay `./test-runner.sh --filter=<TênTest>`. Nếu fail -> Tự đọc lỗi và sửa lại test ngay cho đến khi PASS 100%.
4. **Nghiệm Thu Toàn Dự Án**: Tự chạy `./test-runner.sh --coverage` và in bảng tổng kết độ phủ code.
---
#### 🔹 Cách 2: Sinh Cho 1 Class & Chạy Test Ngay (`--run`)
Khi bạn chỉ muốn viết test cho 1 file và muốn AI test luôn file đó ngay lập tức:
```text
/laravel-unit-test app/Services/PaymentService.php --run
```
🎯 **Cơ chế cam kết không sót file (Full Coverage Engine):**
1. **Lập Manifest Kiểm Soát**: AI tự động quét toàn bộ `app/` (và `Modules/`), lọc ra tất cả các class có logic (Services, Actions, FormRequests, Rules, Jobs, Policies, Middlewares, Listeners, Observers, Repositories). Lập file danh sách kiểm soát `tests/.test-manifest.json` (ví dụ: Tổng cộng 42 files).
2. **Thực Thi Tuần Tự & Lưu Tiến Độ**: Duyệt tuần tự từng class (`[1/42]`, `[2/42]`,...), sinh test tương ứng và đánh dấu `[COMPLETED]`. Tránh hoàn toàn việc tràn token/context và có thể chạy tiếp nếu bị gián đoạn.
3. **Tự Động Chạy Thử & Tự Sửa Lỗi (Auto-Healing)**: Mỗi khi sinh xong 1 file test, AI lập tức chạy `./test-runner.sh --filter=<TênTest>`. Nếu fail -> Tự sửa lại code test ngay cho đến khi pass 100%.
4. **Nghiệm Thu Toàn Dự Án**: Chạy `./test-runner.sh --coverage` và in bảng tổng kết: `42/42 files covered, 100% Passed, Code Coverage: > 80%`.
---
@@ -278,8 +288,8 @@ sg-install-unit-testing.sh --force
| **Cập nhật bộ công cụ (1-Click)**| `sg-test-update` | Kéo bản mới nhất từ Git về máy mọi lúc |
| **Quét & Setup môi trường test** | `/laravel-test-setup` | Chạy trong Claude Code để kiểm tra cấu hình |
| **Tự động cài gói composer thiếu**| `/laravel-test-setup --install` | Cài `mockery`, `faker`, `paratest` vào container |
| **Sinh test TOÀN BỘ dự án (1 lệnh)**| `/laravel-unit-test --all` | Tự động lập manifest, sinh tuần tự, cam kết không sót file |
| **Sinh test cho 1 file** | `/laravel-unit-test app/.../Service.php`| Khi đang code 1 class đơn lẻ |
| **Autopilot: Viết xong test luôn**| `/laravel-unit-test --all --run` | 1 lệnh tự setup, viết test cả dự án, chạy test & tự fix |
| **Sinh test cho 1 file & test luôn**| `/laravel-unit-test app/.../Service.php --run`| Sinh test cho 1 class và chạy test kiểm tra ngay |
| **Sinh test cả thư mục** | `/laravel-unit-test app/Services/` | Khi cần phủ test cho cả 1 folder / module |
| **Quét dự án lớn chưa có test** | `/laravel-unit-test --untested` | Tìm các class thiếu test để sinh hàng loạt |
| **Sinh test cho Git Diff** | `/laravel-unit-test --changed` | Trước khi tạo Pull Request trên Git |