Files
sys-analysis-design/.claude/skills/sad-bid/SKILL.md
Leonard-ThindPad-P50 c81f249920 init git
2026-09-08 10:26:21 +07:00

7.3 KiB
Raw Blame History

name, description
name description
sad-bid Lập bộ hồ sơ dự thầu dự án CNTT hoàn chỉnh từ tài liệu SAD — ma trận đáp ứng HSMT, danh mục chức năng/tính năng, sơ đồ hoạt động, tech stack, ước lượng MM (WBS bottom-up + Use Case Points, tính bằng code), chi phí, kế hoạch/timeline/staffing, đề xuất tài chính, checklist hồ sơ pháp lý — qua workflow generate-bid.js với cổng phê duyệt từng stage và reviewer độc lập. Dùng khi người dùng nói "làm hồ sơ thầu", "hồ sơ dự thầu", "đề xuất kỹ thuật/tài chính", "ước lượng MM", "báo giá dự án", "kế hoạch triển khai cho thầu".

Hồ sơ thầu từ SAD — quy trình có cổng phê duyệt

Bạn (main assistant) điều phối & làm gatekeeper. Agent viết, code tính, con người duyệt từng stage và điền số liệu thương mại. Cấu trúc chuẩn & quy tắc: references/dossier-structure.md. Engine: Workflow({ scriptPath: "<abs>/.claude/workflows/generate-bid.js", args }) — một stage mỗi lần gọi.

args

Tham số Ý nghĩa
stage intake → technical → estimate → plan → financial → assemble → deck → export → review
targets (export, tuỳ chọn) [{html, pdf, kind, optional}] — mặc định index.html → HO-SO-THAU.pdf và deck.html → deck.pdf (optional)
date ngày hôm nay YYYY-MM-DD (bắt buộc)
pricing object lấy từ frontmatter bid/bid-config.md (roles, mdPerMM, hoursPerDay, hoursPerUCP, overheadMode/Pct/Role, contingencyPct, vatPct, currency, rateCard, nonLabor, teamSize, targetMonths, parallelEfficiency, projectStartDate, projectDeadline, ucpVarianceThresholdPct) — bắt buộc ở stage estimate
notes ghi chú người duyệt khi chạy lại một stage
bidDir, sadFile, sectionsDir, briefFile đường dẫn (mặc định bid/, docs/SAD.md, docs/sections, docs/00-project-brief.md)

Bước 0 — Điều kiện & thông tin thương mại

  1. docs/SAD.md phải có (không ⇒ đề nghị chạy sad-pipeline consolidate; chạy từ sections được nhưng cảnh báo). Section chưa approved ⇒ hồ sơ là bản nháp nội bộ, nói rõ.
  2. Tạo bid/inputs/ và hỏi người dùng có HSMT/RFP không → đặt file vào đó, ghi rfpFiles. Không có ⇒ pipeline dùng cấu trúc mặc định + tự đối chiếu theo FR.
  3. Chưa có bid/bid-config.md ⇒ copy bid-config.template.md. Hỏi (≤4 câu/lượt, ≤3 lượt, không hỏi lại điều đã có): bên dự thầu/bên mời thầu/gói thầu/nguồn vốn; deadline nộp & ngày bắt đầu & deadline thực hiện; rate card theo vai trò & VAT & currency (không có ⇒ để 0 → placeholder, giá sẽ "tạm tính"); chi phí phi nhân công đã biết; teamSize/targetMonths; hồ sơ năng lực sẵn có (companyDocs); nhân sự chủ chốt. Ghi vào config bằng Edit.

Vòng lặp stage — luôn: chạy → trình bày trung thực → hỏi Duyệt / Sửa (ghi chú) / Dừng → Duyệt mới sang stage kế

  1. intake (bid-analyst) → trình: tiêu chí chấm & trọng số, yêu cầu bắt buộc & mức đáp ứng, gaps (yêu cầu SAD không đáp ứng — quyết định của người dùng: bổ sung giải pháp, chấp nhận "một phần", hay không dự thầu), checklist tài liệu Phần A với trạng thái, cấu trúc HSMT quy định (nếu có).
  2. technical (bid-technical-writer) → trình: mục đã viết, sơ đồ, tech stack, uncoveredMandatory (phải rỗng), placeholders, keyFacts.
  3. estimate (bid-estimator + code tính) → truyền pricing. Trình: số hạng mục, uncovered FR, bảng MM theo vai trò, dự phòng, overhead, grandMM, đối chiếu UCP & variancePct (vượt ngưỡng ⇒ khuyến nghị xem lại hạng mục), chi phí (missingRates/missingAmounts ⇒ giá tạm tính), timeline (số tháng, teamSize suy ra hay cấu hình, deadlineFit), warnings. Đây là gate quan trọng nhất: người dùng xác nhận đơn giá, giả định năng suất, mức dự phòng, teamSize trước khi đi tiếp; sửa config ⇒ chạy lại estimate (số liệu mới ghi vào bid/estimate.computed.json).
  4. plan (bid-planner) → trình: giai đoạn/mốc/ngày, peak headcount, deadlineFits & phương án tăng tốc, placeholders. Nếu người dùng muốn đổi teamSize/ngày bắt đầu ⇒ sửa config, chạy lại estimate rồi plan (số phải đồng bộ).
  5. financial (bid-financial-writer) → trình: tổng trước/sau VAT, missingRates/missingAmounts, mốc thanh toán ↔ mốc B7, placeholders.
  6. assemble (bid-builder) → trình: sectionsMissing (phải rỗng), checks, priceConsistentA1C5, placeholdersCount; có thể publish bid/artifact.html (Artifact, favicon 📁) để người duyệt xem trực quan trước khi xuất PDF.
  7. deck (bid-deck-builder) → trình: slideCount (15–25), danh sách slide & nguồn, numbersUsed, checks, placeholdersCount; có thể publish bid/deck-artifact.html để xem. Duyệt kịch bản/nhấn mạnh theo tiêu chí chấm trước khi export.
  8. export (bid-exporter) → trình: browser đã dùng, từng PDF (pages, sizeKB, mermaidRendered/mermaidExpected, outline), warnings. blocked=true (không có Edge/Chrome) ⇒ đưa manualInstructions cho người dùng. Mermaid chưa render đủ ⇒ chạy lại export; lỗi thuộc HTML ⇒ quay lại assemble/deck với notes.
  9. review (bid-reviewer) → trình: verdict, canSubmit, uncoveredMandatory, numberMismatches, leaks, placeholders, exportChecks, findings theo target. Định tuyến sửa theo target (chạy lại stage đó với notes, rồi các stage sau phụ thuộc: sửa estimate ⇒ plan, financial, assemble, deck, export; sửa technical ⇒ assemble, deck, export; sửa plan ⇒ financial (C6), assemble, deck, export; sửa assemble/deck ⇒ export) và review lại; tối đa 2 vòng, sau đó báo người dùng.

Bàn giao

Bộ nộp: bid/HO-SO-THAU.pdf (hồ sơ in hoàn chỉnh A4, có bookmark theo mục, số trang) và bid/deck.pdf (slide thuyết trình 16:9); bản nguồn: bid/HO-SO-THAU.md, bid/index.html, bid/deck.html; checklist Phần A với việc còn phải đính kèm (giấy tờ công ty do người dùng chuẩn bị). PDF được xuất tự động bằng Edge/Chrome headless có sẵn trên máy; nếu máy khác không có trình duyệt Chromium, exporter trả hướng dẫn in thủ công. Chỉ nói "nộp được" khi canSubmit = true; còn placeholder/missingRates ⇒ "bản nháp chờ điền". Nhắc: SAD và estimate.json (lý giải nội bộ) không nộp — chỉ nộp hồ sơ đã ráp; kiểm tra hiệu lực văn bản pháp lý tại thời điểm nộp.

Không được

Bỏ gate · tự điền đơn giá/thuế/tên/ngày · để agent cộng số (chỉ code) · sửa nội dung thay agent (trừ frontmatter trạng thái) · nộp/publish khi còn leaks hoặc yêu cầu bắt buộc chưa đáp ứng.