All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 6m30s
Bookend @close chay du 6 vai + 2 vai KIEM vong. Ket qua dat nhat cua phien. Con-DO: - tooling-auditor PASS_WITH_FLAGS 6 (F-1 o canonical Sub-agents 26 -> 28, la dich cua 5 con-tro B1 ⇒ 1 o sai = 5 con-tro resolve sai) - harvest-curator GATE-FAIL 6 (F-03: cong thuc cot-A MU khi phien khong mo run-folder ⇒ A∖B = ∅ ⇒ bao PASS trong khi 7/7 vai thung. DAT-ao do CAU TRUC — may khong hong, may HOI SAI CAU) - lead-stale-auditor 9 FLAG · lead-gap-auditor 6 FLAG Con-KIEM: - ring1-audit 26 DAT / 5 TRUOT — thach-CLEAN THUNG mat "skill sach" cua H1: ef-core-migration heading tu mau thuan (vua tro STATUS canonical vua ghi "moi nhat = row cuoi bang", row cuoi = Mig 71, dia = 72). - ring2-audit 14 DAT / 0 TRUOT — 15/15 FLAG trung vat that, 0 gan oan. 🔴 HAI LOI LEAD TU GAY, ca hai do phep do doc lap bat: 1. Tu MO RONG tham quyen: viet "Chu du an phan P7 ve (ii)" tren vat GUI HUB, trong khi so quyet-dinh ma chinh bao-cao tro toi ghi "CHUA phan, VAN TREO". Anh noi "OK lam het roi khep tron di" = uy quyen chay not, KHONG phai phan noi dung. Da ha chu 3 site. Anh bac thi go, 1 luot. 2. Sweep "roster 23->28" TOAN CUC an vao 2 anh chup DONG BANG (STATUS:15 ky S159-S160 · :478 lineage S153). Bang chung noi-tai: o :15 moi so lang gieng cung dong van gia tri cu, CHI roster nhay. Da hoan ca 2 ve 23. ⇒ LUAT: literal trong segment "✅ S…" = ANH CHUP, CAM sweep theo pattern. Va them: vi pham C1 dong-bang be-mat-do (ghi STATUS/HANDOFF trong luc 4 vai dang do; vai gap chung bang chinh phep do cua no: 285/54 -> 287/56). RCA C1-S181 vao error-ledger, kem khai NO CHUA TRA: 0 cong may nao chan. Da xu 20/21 FLAG: seed 9/9 nhat ky vai · re-stamp 20 slug mo + 3 moi · RC -21-42-10 vao ACTIVE-MARKS kem PHAM VI KY · va cong thuc cot-A · YC-007..012 loi anh nguyen van · 2 bai hoc vao auto-memory. §L.c gate: vong 3/5 (khong-nhip V3 trio, V4 nen-ngu) | phep DAT 4 / TRUOT 0. mind-check closed-mode: dat=10 TRUOT=0 exit 0. _end da ghi (FROZEN). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Skill Library — SOLUTION_ERP
Skill này là tài liệu chuyên biệt để Claude (và developer khác) dùng khi cần deep-dive 1 domain area. Claude tự động invoke qua Skill tool dựa trên semantic matching với description trong từng SKILL.md.
Skills hiện có
Domain skills (logic nghiệp vụ)
| Skill | Mục đích | Trigger ví dụ | Trạng thái |
|---|---|---|---|
contract-workflow |
State machine 9 phase + versioned workflow per ContractType + role × phase guard + SLA + auto-gen mã HĐ RG-001 | "approve contract", "chuyển phase", "versioned workflow", "HĐ cũ giữ cũ" | ✅ Tier 3 + Phase 6 cross-ref PE workflow |
form-engine |
Render template docx/xlsx + FieldSpec JSON + DynamicForm + PDF export LibreOffice | "export contract as word", "điền form", "render template", "PDF export" | ✅ Active |
permission-matrix |
Role × MenuKey × CRUD + seed + 3-layer resolution + inherit Contracts/Workflows/PurchaseEvaluations | "permission denied", "gán role", "menu không hiện", "inherit permission" | ✅ Active (Phase 6 +Pe_/PeWf_) |
Ops/infra skills (devops + security + schema)
| Skill | Mục đích | Trigger ví dụ | Trạng thái |
|---|---|---|---|
dependency-audit-erp |
Scan CVE NuGet + npm 2 FE, respect pin constraint (MediatR 12.4.1, Swashbuckle 6.9.0) | "npm audit", "dotnet vulnerable", "deps scan", "nâng cấp package" | ✅ New Tier 3 |
ef-core-migration |
Tạo/revert EF Core 10 migration, 3-file rule, DesignTimeDbContextFactory, migration history (mới nhất → row cuối bảng skill; số → docs/STATUS.md) |
"thêm migration", "EF migration", "schema update", "snapshot lỗi" | ✅ Updated S168 (ff7f655) · nội-dung tới row Mig cuối hiện hành — soát @S172; số bảng + số Mig → docs/STATUS.md (B1, KHÔNG neo số ở ô này) |
iis-deploy-runbook |
3 IIS site + win-acme cert + gitea-runner + LibreOffice + debug 500/502/SignalR prod + G-084 IPv4/IPv6 hardening | "prod 500", "IIS fail", "cert hết hạn", "restart app pool", "deploy IIS", "port hijack" | ✅ Updated (G-084) |
Format chuẩn 1 skill
Mỗi skill là 1 folder với ít nhất SKILL.md + optional examples/ + references/:
.claude/skills/<skill-name>/
├── SKILL.md ← Entry point: description, when-to-use, workflow
├── examples/ ← Code snippets mẫu (optional)
│ └── *.cs | *.tsx
└── references/ ← Link đến file code thật, docs (optional)
Frontmatter SKILL.md (BẮT BUỘC when-to-use để skill auto-trigger):
---
name: skill-name-kebab-case
description: 1-3 câu mô tả skill làm gì + stack specificity (để embedding match chính xác)
when-to-use:
- "trigger phrase 1"
- "trigger phrase 2"
- "keyword tiếng Việt"
---
# Skill Name
## Context
...
## Workflow / Commands
...
## Pitfalls
...
## Code pointers
- `path/to/file.cs`
Tạo skill mới — checklist
- Tạo folder
.claude/skills/<kebab-case-name>/ - Viết
SKILL.mdvới frontmatter + sections: Context / Workflow / Code pointers / Common pitfalls - Add row vào bảng "Skills hiện có" phía trên
- Update
docs/CLAUDE.md(dòng skill count) - Commit
[CLAUDE] Skill: add <name>
Nguyên tắc design skill
PROJECT-SPECIFIC, không clone generic:
- Skill user-level global đã có sẵn (
code-reviewer,sql-database-assistant,focused-fix, ...) - Skill project-level phải encode kiến thức SOLUTION_ERP-only mà generic không có:
- Commit convention
[CLAUDE] <scope>: ... - Path pattern
src/Backend/SolutionErp.*/... - Pin constraint (MediatR 12.4.1, Swashbuckle 6.9.0, TypeScript 6 erasableSyntaxOnly)
- Gotcha-referenced (dẫn chiếu
docs/gotchas.md#N) - Workflow Vietnamese-first
- Commit convention
Keep it actionable:
- Commands copy-pastable (không pseudocode)
- Paths đầy đủ (không
src/...) - Version pinned (không "latest")
- Dẫn chiếu gotcha/migration # cụ thể
Related
docs/CLAUDE.md— quick rules + full stack contextdocs/gotchas.md— bẫy đã gặp (số + các mục mới nhất →docs/STATUS.md— B1, KHÔNG chép digest ở đây: bản sao thối im lặng, gỡ @S172 sau khi đo lệch 7 mục)docs/changelog/migration-todos.md— roadmap 5 phase + Tier 3