Comprehensive BOQ (Bill of Quantities) creation and management for construction projects. This skill should be used when Claude needs to: (1) Create new BOQ files with standard work categories, (2) Add items to existing BOQ, (3) Manage construction cost estimates with material and labor breakdowns, (4) Generate Thai construction project cost sheets with proper formatting
ทักษะสำหรับจัดทำและจัดการใบประมาณราคาค่าก่อสร้าง (BOQ) ด้วย Excel
📁 Output Location: ไฟล์ BOQ ที่สร้างจะถูกบันทึกไปที่ workspace/boq_examples/ เพื่อแยกออกจาก skill folder
📚 Best Practices: อ่านแนวทางการจัดทำ BOQ ที่ถูกต้องได้ที่ BEST_PRACTICES.md
BOQ ทุกไฟล์จะมี 5 หมวดงานหลัก:
แต่ละ BOQ จะมีคอลัมน์:
Use the boq_helper.py script to create a new BOQ:
python boq_helper.py create <filename> [project_name] [location] [customer]
Examples:
# สร้าง BOQ พื้นฐาน
python boq_helper.py create project_boq.xlsx
# สร้าง BOQ พร้อมข้อมูลโครงการ
python boq_helper.py create office_renovation.xlsx "โครงการปรับปรุงสำนักงาน" "กรุงเทพมหานคร" "บริษัท ABC จำกัด"
The script creates a formatted Excel file with:
Add items to specific categories:
python boq_helper.py add <filename> <category> <item_no> <description> <quantity> <unit> [material_cost] [labor_cost] [note]
Parameters:
filename: BOQ file pathcategory: One of the 5 standard categories (exact match required)item_no: Item number (e.g., "1.1", "2.1")description: Item descriptionquantity: Quantity (number)unit: Unit (e.g., "ตร.ม.", "ตร.วา", "จุด", "ชุด")material_cost: Material cost per unit (optional, default: 0)labor_cost: Labor cost per unit (optional, default: 0)note: Additional notes (optional)Example:
python boq_helper.py add office_renovation.xlsx "งานเตรียมการ" "1.1" "รื้อถอนผนังเก่า" 25.5 "ตร.ม." 50 150 "รวมขนย้ายเศษวัสดุ"
After adding items, recalculate all formulas:
python recalc.py <filename>
Example:
python recalc.py office_renovation.xlsx
The recalc script:
Complete workflow for creating a BOQ:
import subprocess
import json
# 1. Create new BOQ
result = subprocess.run([
'python', 'boq_helper.py', 'create',
'renovation.xlsx',
'โครงการปรับปรุงอาคาร',
'กรุงเทพฯ',
'บริษัท XYZ'
], capture_output=True, text=True)
print(json.loads(result.stdout))
# 2. Add items to different categories
items = [
('งานเตรียมการ', '1.1', 'รื้อถอนผนัง', 30, 'ตร.ม.', 50, 150),
('งานโครงสร้าง', '2.1', 'เทพื้นคอนกรีต', 50, 'ตร.ม.', 800, 400),
('งานสถาปัตยกรรม', '3.1', 'ทาสีภายใน', 100, 'ตร.ม.', 80, 120),
]
for category, no, desc, qty, unit, mat, lab in items:
subprocess.run([
'python', 'boq_helper.py', 'add',
'renovation.xlsx', category, no, desc,
str(qty), unit, str(mat), str(lab)
], capture_output=True, text=True)
# 3. Recalculate formulas
result = subprocess.run([
'python', 'recalc.py', 'renovation.xlsx'
], capture_output=True, text=True)
print(json.loads(result.stdout))
For more flexibility, directly use openpyxl with the xlsx skill patterns:
from openpyxl import load_workbook
wb = load_workbook('renovation.xlsx')
ws = wb.active
# Add custom item to specific row
row = 8 # Example row number
ws[f'A{row}'] = '1.2'
ws[f'B{row}'] = 'งานขุดดิน'
ws[f'C{row}'] = 15.5
ws[f'D{row}'] = 'ลบ.ม.'
ws[f'E{row}'] = 200
ws[f'F{row}'] = f'=C{row}*E{row}' # Auto-calculate
ws[f'G{row}'] = 300
ws[f'H{row}'] = f'=C{row}*G{row}' # Auto-calculate
ws[f'I{row}'] = f'=F{row}+H{row}' # Total
ws[f'J{row}'] = 'รวมค่าขนย้ายดิน'
wb.save('renovation.xlsx')
Then recalculate:
python recalc.py renovation.xlsx
recalc.py after creating or modifying BOQstatus field: "success" or "error"boq_helper.py - Main BOQ creation and management scriptrecalc.py - Formula recalculation scriptvalidate_boq.py - Validation script for checking budget proportionsBEST_PRACTICES.md - Guidelines for creating proper BOQสัดส่วนงบประมาณมาตรฐาน (สำหรับบ้านพักอาศัย):
อ่านรายละเอียดเพิ่มเติมใน BEST_PRACTICES.md
ตัวอย่างการใช้งานอยู่ที่ examples/ folder:
# สร้าง BOQ บ้านพักอาศัย 2 ชั้น (ตาม Best Practices)
python examples/create_house_boq.py
ไฟล์ที่สร้างจะอยู่ที่: workspace/boq_examples/
ตรวจสอบสัดส่วนงบประมาณ:
from validate_boq import validate_from_data
boq_totals = {
"งานเตรียมการ": 186916,
"งานโครงสร้าง": 1122092,
"งานสถาปัตยกรรม": 1495327,
"งานระบบไฟฟ้า": 448598,
"งานระบบสุขาภิบาล": 485981
}
validate_from_data(boq_totals)