Private Docs

skill งานจริง — review-ado-pr · super-front-end · agent-executable

3 skill ที่ผูกกับงานที่ทำอยู่จริง: review PR .NET บน Azure DevOps, เขียน Angular ของ SuperApp ตาม convention จริง และ probe ว่า step ใน runbook infra agent รันเองได้ไหม

อัปเดต: 2026-08-06

3 ตัวนี้เป็น skill ล้วน ไม่มี agent เป็นของตัวเอง — วิ่งบน main thread ในเซสชันปัจจุบัน และผูกกับ domain งานจริง (ไม่ใช่ของทั่วไปแบบ dev-team)


1. /review-ado-pr — review PR .NET บน Azure DevOps

Input: URL เต็มของ PR เช่น https://dev.azure.com/{org}/{project}/_git/{repo}/pullrequest/1234 — parse ไม่ได้ครบ บอกว่า parse ได้อะไรแล้วถาม ห้ามเดา

Scope: Backend .NET เท่านั้น (Backend_*, Clean Architecture 4 layer) — ถ้า PR เป็น Frontend_* (Angular) ให้บอกแล้วหยุด

พฤติกรรมที่ต้องรู้ก่อนใช้

ลำดับการทำงาน

  1. Parse URL → echo กลับให้เห็น (จับเป้าผิดได้ตั้งแต่ต้น)
  2. Resolve ชื่อ repo → GUID ก่อน แล้วใช้ GUID เป็น repositoryId ในทุก call ถัดไป
  3. ดึง PR metadata (เก็บ source branch ไว้ใช้ตอนดึงไฟล์) → ดึง diff
  4. รัน 7 gate จาก CHECKS.md บนไฟล์ .cs / migration / appsettings*.json ที่เปลี่ยน — ดึง context เพิ่ม เฉพาะที่ต้องใช้จริง
  5. ประกอบ finding: severity + category + file:line + ปัญหา + วิธีแก้ที่เป็นรูปธรรม
  6. รายงานภาษาไทย นำด้วยบรรทัดนับ แล้วแยกตาม severity 🔴 / 🟡 / 🟢
  7. โพสต์: 🔴🟡 เป็น inline thread · 🟢 รวมเป็น thread สรุปอันเดียว · เช็ค thread เดิมก่อนเพื่อไม่โพสต์ซ้ำ

7 gates

OWASP Top 10 · Sonar C# rules · EF/async/IO performance · Clean Architecture 4 layer · tests · migration safety · sensitive-data logging

Gate 4 (structure) อ้างอิงไฟล์จริง ไม่ fork กฎCLAUDE.md และ SECURITY_README.md ของ repo เป็นเจ้าของถ้อยคำ ถ้าขัดกับ CHECKS.md → ไฟล์จริงชนะ

ความลึกในการสแกน

ระดับไฟล์
Deep (ดึงมาอ่าน + 7 gates)Controllers/ · appsettings*.json · Program.cs/DependencyInjection.cs · Migrations/*.cs · Handler ที่ เพิ่มใหม่ · ชื่อไฟล์มี Token/Auth/Session/Secret/Key/Password/Credential/Debug
Light (เช็คว่ามีอยู่ ไม่อ่าน)*.csproj · Dockerfile · docs/, *.md (ข้าม) · tests/ (แค่เช็คว่ามี test คู่ Handler ใหม่) · ไฟล์ที่ถูกลบ

PR ใหญ่ เป็นเรื่องปกติ — line-content diff เต็มมัก เกิน token cap อย่าพยายามอ่านทั้งกอง ให้ดึงเฉพาะรายการไฟล์แล้วเลือกอ่านตัวที่ signal สูง


2. /super-front-end — Angular ของ SuperApp

Angular 21 + Nx 22 + Module Federation · ใช้เมื่อจะสร้าง/แก้ component, page, service, state, guard, interceptor, routing, MF remote entry, UI Kit component หรือเขียน unit test ฝั่ง frontend

3 repo ที่ครอบคลุม

Repoบทบาท
Frontend_HostAppSuperAppShell host (Nx monorepo)
Frontend_RemoteAppFXRemote MF app
Frontend_SuperAppLibraryUiShared libs — @exim/ui-kit, @exim/auth-sdk, @exim/util-sdk

Stack: standalone components + signals + inject() · ng-zorro-antd ~21 + @exim/ui-kit · MSAL + auth-sdk · signal-based local state (.state.ts) ไม่ใช้ NgRx · Jest · SCSS + design tokens · i18n โหลด ARB ตอน runtime · SSR @angular/ssr

กฎ 13 ข้อที่ skill บังคับ

  1. Standalone เท่านั้น ห้ามสร้าง NgModule
  2. inject() เท่านั้น ห้าม constructor DI
  3. Signals สำหรับ state — ห้าม BehaviorSubject สำหรับ UI state
  4. State แยกไฟล์ ห้ามใส่ business logic ใน component
  5. Typed ห้าม any — สร้าง interface/type ก่อนใช้
  6. Lazy load ทุก page (loadComponent / loadChildren)
  7. ใช้ ng-zorro-antd เป็น UI framework หลัก
  8. มี ex- component ใน ui-kit ให้ใช้ก่อน ไม่มีค่อยใช้ ng-zorro ตรง
  9. SCSS + design token ผ่าน var(--token-name)
  10. ชื่อไฟล์: shell/remote ไม่มี suffix .component · ui-kit มี
  11. ทุก state/service ต้องมี .spec.ts
  12. i18n: remote ใช้ .message.ts · shell ใช้ libs/shared/messages
  13. remote apps ใช้ .selector.ts เก็บ data-testid

Scaffolding ที่มีขั้นตอนสำเร็จรูป

หน้าใหม่ใน shell · หน้าใหม่ใน remote app · UI Kit component ใหม่ · service ใหม่ — แต่ละอันบอกครบว่าต้องสร้างไฟล์อะไรบ้าง เพิ่ม route ที่ไหน และ export จากไหน


3. /agent-executable — probe ก่อน execute runbook

ก่อนลงมือรัน plan/runbook ที่มี step แตะ infra (az cli, kubectl, database, endpoint จำกัดสิทธิ์) — ห้ามเดาจากคำอธิบายในเอกสารว่า step ไหนทำเองได้ ต้อง probe จริงทีละ step แล้วค่อยจัดกลุ่ม

วิธี probe (read-only + reversible เสมอ)

ResourceProbeเช็คอะไร
Azure CLI / KeyVaultaz account show แล้ว az keyvault secret list --vault-name <X> --query "[0].name"login จริงไหม เห็นชื่อ secret ไหม — ห้าม secret show ที่ print ค่าจริงเพียงเพื่อเช็ค
kubectlkubectl auth can-i <verb> <resource> -n <ns>มีสิทธิ์จริงไหม ไม่ต้อง exec เข้า pod
Databasequery read-only เบาสุด (SELECT 1) ผ่าน connection ที่มีอยู่แล้วเชื่อมได้จริงไหม
HTTP endpointcurl -sf -o /dev/null -w "%{http_code}"reachable ไหม

Probe fail → เก็บ error message จริง (redact ถ้ามีของ sensitive หลุด) เป็นเหตุผล ห้ามเดาเหตุผลเอง

Output ต่อ step

[agent-executable] Task N Step M — <probe ที่ยืนยัน>
[ต้องรอคน] Task N Step M — ต้องการ: <VPN/role/ฯลฯ> (probe: <error สั้นๆ>)