Files
solution-erp/.claude/skills
pqhuy1987 7c83ac8f17 [CLAUDE] Docs+Skill: chốt Session 14 wrap-up — PE 3-button workflow + Task 2 defer
Session 14 (2026-05-07) docs/skill update:

STATUS.md:
- Last updated + Phase summary count (95→96 test, 20 mig, 57 bảng, 41 gotcha)
- Recently Done row Session 14 chi tiết (3-button + Task 2 in-progress + DesignTime/Runtime DB gotcha)

HANDOFF.md:
- TL;DR Session 14 prepend với 1 commit + Task 2 defer
- 5 cảnh báo Session 15+: TraLai phase orphan / Task 2 sample seed / DesignTime
  vs Runtime DB / Budget N-stage defer / schema-diagram §17-19 defer

migration-todos.md: Phase 9 + Session 14 block 4 sub-task done + 2 defer task

Session log NEW `2026-05-07-2500-3-button-workflow.md`:
- Bối cảnh + spec 3-button (Duyệt/Trả lại/Từ chối) + implementation chi tiết
  (Domain policy expand + Service tách reject + FE button + dialog warning)
- Tests update (95→96 với +1 NEW Reject_To_TuChoi_Locks_Permanently)
- Task 2 in-progress: DesignTime vs Runtime DB gotcha + API exit 255 sớm
- Plan organization sau S14

Skill ef-core-migration:
- description + heading: 17→20 migration
- Bảng migration history thêm Mig 18-19 (PE) + Mig 20 (Contract)
- Section MỚI "N-stage workflow pattern (Mig 18-20)" — architecture decision
  với filtered unique trick + per-module migration packaging guideline
- Phase 8 update: 83→96 test breakdown

Skill contract-workflow:
- Section MỚI "Phase 9+ done (Mig 18-20 — Session 12/13/14)":
  * N-stage workflow PE + Contract (entity + filtered unique split + service
    refactor + tests + FE Designer + UsersPage cấp + API)
  * PE 3-button approval (Duyệt/Trả lại/Từ chối) Session 14
  * Defer: Budget N-stage / Phase TraLai=98 orphan

CLAUDE.md root: 16→20 migration + 55→57 bảng + 83→96 test
docs/rules.md §7: Phase 9 active 83→96 test

Verify: dotnet test 96 pass + npm build (skip — pure docs/skill update).

🎉 Session 14 wrap-up complete. Pushed 1 task (3-button) + Task 2 defer.
Cumulative since session start (13h17): 13 commit (1 button removal +
6 PE N-stage Chunk A-F + 5 Contract N-stage Chunk A,B,C,D,F + 1 3-button).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 19:40:00 +07:00
..

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, 16 migration history (Init → AddTwoStageDeptApprovalAndSmartReject) "thêm migration", "EF migration", "schema update", "snapshot lỗi" Updated Phase 9 (Mig 16)
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

  1. Tạo folder .claude/skills/<kebab-case-name>/
  2. Viết SKILL.md với frontmatter + sections: Context / Workflow / Code pointers / Common pitfalls
  3. Add row vào bảng "Skills hiện có" phía trên
  4. Update docs/CLAUDE.md (dòng skill count)
  5. 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

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ể
  • docs/CLAUDE.md — quick rules + full stack context
  • docs/gotchas.md — 41 bẫy đã gặp
  • docs/changelog/migration-todos.md — roadmap 5 phase + Tier 3