关于 verification-loop-construction
用于核验施工自动化输出的技能,适合在交付或部署前检查估算、进度、BIM/CAD 数据、报告和数据管道。它将检查组织为五个阶段,涵盖数据完整性、业务规则、标准、输出质量和来源交叉验证。
主要功能
- 01数据完整性与一致性检查
- 02施工业务规则验证
- 03标准合规检查
- 04输出格式与质量审查
- 05与来源数据交叉验证
- 06生成验证报告
适用场景
- 01提交客户前检查估算
- 02验证进度安排与资源分配
- 03按预期值审查 BIM 数据
- 04根据来源数据核验管道输出
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ datadrivenconstruction/ ddc_skills_for_ai_agents_in_construction --skill verification-loop-construction安装后在 Claude Code 中输入/verification-loop-construction确认已加载。
附带文件claw.jsoninstructions.md
详细介绍
施工自动化验证循环
一套系统化验证框架,确保施工自动化输出在交付或部署前达到质量要求。
使用时机
在以下情况调用此技能:
- 生成成本估算后
- 创建或更新进度计划后
- 处理 BIM/CAD 数据后
- 生成报告(日、周、月报)后
- 运行数据管道后
- 向客户提交文件前
- 部署自动化工作流前
验证阶段
阶段 1:数据完整性检查
def verify_data_integrity(output: dict) -> VerificationResult:
"""Check data completeness and consistency"""
checks = []
# Completeness check
required_fields = get_required_fields(output['type'])
missing = [f for f in required_fields if f not in output]
checks.append({
'name': 'Completeness',
'status': 'PASS' if not missing else 'FAIL',
'details': f'Missing fields: {missing}' if missing else 'All required fields present'
})
# Consistency check
inconsistencies = find_inconsistencies(output)
checks.append({
'name': 'Consistency',
'status': 'PASS' if not inconsistencies else 'WARN',
'details': inconsistencies or 'No inconsistencies found'
})
# Referential integrity
broken_refs = check_references(output)
checks.append({
'name': 'Referential Integrity',
'status': 'PASS' if not broken_refs else 'FAIL',
'details': f'Broken references: {broken_refs}' if broken_refs else 'All references valid'
})
return VerificationResult(checks)
数据完整性检查清单
- 所有必填字段均已填写
- 无重复记录
- 外键均能正确解析
- 日期格式一致
- 货币值格式正确
- 计量单位已标准化
阶段 2:业务逻辑验证
def verify_business_logic(output: dict) -> VerificationResult:
"""Verify construction-specific business rules"""
checks = []
# Cost estimate checks
if output['type'] == 'cost_estimate':
# Verify totals match line items
calculated_total = sum(item['amount'] for item in output['line_items'])
declared_total = output['total']
variance = abs(calculated_total - declared_total)
checks.append({
'name': 'Total Accuracy',
'status': 'PASS' if variance < 0.01 else 'FAIL',
'details': f'Calculated: {calculated_total}, Declared: {declared_total}'
})
# Verify markup applied correctly
for item in output['line_items']:
expected_markup = item['base_cost'] * (1 + item['markup_rate'])
if abs(item['amount'] - expected_markup) > 0.01:
checks.append({
'name': f'Markup Check - {item["id"]}',
'status': 'FAIL',
'details': f'Expected: {expected_markup}, Got: {item["amount"]}'
})
# Schedule checks
if output['type'] == 'schedule':
# Verify dependencies
for task in output['tasks']:
for pred_id in task.get('predecessors', []):
pred = find_task(output['tasks'], pred_id)
if pred and pred['end_date'] > task['start_date']:
checks.append({
'name': f'Dependency Violation - {task["id"]}',
'status': 'FAIL',
'details': f'Task starts before predecessor {pred_id} ends'
})
# Verify resource allocation
resource_conflicts = find_resource_conflicts(output['tasks'])
checks.append({
'name': 'Resource Conflicts',
'status': 'PASS' if not resource_conflicts else 'WARN',
'details': resource_conflicts or 'No resource conflicts'
})
return VerificationResult(checks)
业务逻辑检查清单
成本估算:
- 分项总计 = 已声明的小计
- 小计 + 加价 = 总计
- 税费计算正确
- 预备费应用一致
- 单价在预期范围内
- 数量与 QTO 相符
进度计划:
- 遵循依赖关系(无反向链接)
- 关键路径计算正确
- 资源分配未超额
- 里程碑日期设置正确
- 工作日和日历正确
- 时差值合理
BIM 数据:
- 构件数量符合预期
- 属性值在范围内
- 空间关系有效
- 楼层关联正确
- 分类代码有效
阶段 3:格式与标准合规性
def verify_standards_compliance(output: dict) -> VerificationResult:
"""Verify compliance with construction standards"""
checks = []
# CSI classification check
if 'csi_codes' in output:
invalid_codes = []
for code in output['csi_codes']:
if not validate_csi_code(code):
invalid_codes.append(code)
checks.append({
'name': 'CSI Code Validation',
'status': 'PASS' if not invalid_codes else 'WARN',
'details': f'Invalid codes: {invalid_codes}' if invalid_codes else 'All codes valid'
})
# CWICR mapping check
if output.get('cwicr_mapped'):
unmapped = [item for item in output['items'] if not item.get('cwicr_id')]
checks.append({
'name': 'CWICR Mapping',
'status': 'PASS' if not unmapped else 'WARN',
'details': f'{len(unmapped)} items unmapped' if unmapped else 'All items mapped'
})
# Document format check
if output['type'] == 'report':
format_issues = validate_report_format(output)
checks.append({
'name': 'Report Format',
'status': 'PASS' if not format_issues else 'WARN',
'details': format_issues or 'Format compliant'
})
return VerificationResult(checks)
标准合规性检查清单
- CSI MasterFormat 代码有效(6 位)
- UniFormat 代码有效(如有使用)
- 已提供 CWICR 映射
- ISO 日期格式(YYYY-MM-DD)
- 货币格式一致
- 计量单位一致(公制/英制)
阶段 4:输出质量检查
def verify_output_quality(output: dict) -> VerificationResult:
"""Check output quality and presentation"""
checks = []
# Formatting check
if output['format'] == 'excel':
checks.extend([
{
'name': 'Column Headers',
'status': check_headers_present(output),
'details': 'Headers in first row'
},
{
'name': 'Number Formatting',
'status': check_number_format(output),
'details': 'Currencies and percentages formatted'
},
{
'name': 'Print Area',
'status': check_print_area(output),
'details': 'Print area set for clean output'
}
])
if output['format'] == 'pdf':
checks.extend([
{
'name': 'Page Layout',
'status': check_page_layout(output),
'details': 'Margins and orientation correct'
},
{
'name': 'Images Rendered',
'status': check_images(output),
'details': 'All images/charts visible'
},
{
'name': 'Fonts Embedded',
'status': check_fonts(output),
'details': 'Fonts embedded for portability'
}
])
# Data visualization check
if 'charts' in output:
for chart in output['charts']:
checks.append({
'name': f'Chart - {chart["title"]}',
'status': validate_chart(chart),
'details': 'Labels, legends, and data visible'
})
return VerificationResult(checks)
输出质量检查清单
- 已添加页眉/页脚
- 页码正确
- 已应用公司品牌标识
- 图表清晰易读
- 表格对齐正确
- 链接/引用可用
阶段 5:交叉引用验证
def verify_cross_references(output: dict, sources: list) -> VerificationResult:
"""Validate output against source data"""
checks = []
for source in sources:
# Compare key metrics
metrics = extract_comparable_metrics(output, source)
for metric_name, (output_val, source_val) in metrics.items():
variance_pct = abs(output_val - source_val) / source_val * 100 if source_val else 0
status = 'PASS'
if variance_pct > 5:
status = 'WARN'
if variance_pct > 10:
status = 'FAIL'
checks.append({
'name': f'{metric_name} vs {source["name"]}',
'status': status,
'details': f'Output: {output_val}, Source: {source_val}, Variance: {variance_pct:.1f}%'
})
return VerificationResult(checks)
交叉引用检查清单
- QTO 与 BIM 模型相符
- 估算与规格说明相符
- 进度计划与估算相符
- 预算与合同相符
- 进度与现场数据相符
- 实际值与预测值相符(在容差范围内)
验证报告格式
完成所有阶段后,生成验证报告:
═══════════════════════════════════════════════════════════════
VERIFICATION REPORT
═══════════════════════════════════════════════════════════════
Output Type: Cost Estimate
Project: Downtown Office Tower
Generated: 2026-01-24 14:30:00
Verified By: DDC Verification Loop v1.0
───────────────────────────────────────────────────────────────
PHASE 1: DATA INTEGRITY
───────────────────────────────────────────────────────────────
✓ Completeness PASS All required fields present
✓ Consistency PASS No inconsistencies found
✓ Referential PASS All references valid
───────────────────────────────────────────────────────────────
PHASE 2: BUSINESS LOGIC
───────────────────────────────────────────────────────────────
✓ Total Accuracy PASS Calculated: $1,523,456.78, Declared: $1,523,456.78
✓ Markup Check PASS All markups applied correctly
⚠ Range Check WARN 3 items outside typical ranges
───────────────────────────────────────────────────────────────
PHASE 3: STANDARDS COMPLIANCE
───────────────────────────────────────────────────────────────
✓ CSI Codes PASS All codes valid
✓ CWICR Mapping PASS 156/156 items mapped
✓ Unit Standards PASS All units metric
───────────────────────────────────────────────────────────────
PHASE 4: OUTPUT QUALITY
───────────────────────────────────────────────────────────────
✓ Excel Format PASS Headers, formatting correct
✓ Charts PASS All visualizations rendered
✓ Print Ready PASS Print area configured
───────────────────────────────────────────────────────────────
PHASE 5: CROSS-REFERENCE
───────────────────────────────────────────────────────────────
✓ vs BIM QTO PASS Variance: 0.2%
✓ vs Historical PASS Within expected range
⚠ vs Budget WARN 5.3% over budget baseline
═══════════════════════════════════════════════════════════════
SUMMARY
═══════════════════════════════════════════════════════════════
Total Checks: 18
Passed: 16
Warnings: 2
Failed: 0
OVERALL STATUS: ✓ READY FOR DELIVERY
Recommendations:
1. Review items outside typical ranges (see Appendix A)
2. Discuss budget variance with PM before submission
═══════════════════════════════════════════════════════════════
自动化验证管道
class ConstructionVerificationPipeline:
"""Automated verification for construction outputs"""
def __init__(self, output_type: str):
self.output_type = output_type
self.phases = self._get_phases_for_type(output_type)
def verify(self, output: dict, sources: list = None) -> VerificationReport:
results = []
for phase in self.phases:
phase_result = phase.execute(output, sources)
results.append(phase_result)
# Stop on critical failure
if phase_result.has_critical_failure():
break
return VerificationReport(
output_type=self.output_type,
phases=results,
overall_status=self._calculate_overall_status(results)
)
def _calculate_overall_status(self, results: list) -> str:
if any(r.has_failures() for r in results):
return 'NOT READY - FIX REQUIRED'
if any(r.has_warnings() for r in results):
return 'READY WITH WARNINGS'
return 'READY FOR DELIVERY'
# Usage
pipeline = ConstructionVerificationPipeline('cost_estimate')
report = pipeline.verify(estimate_output, sources=[bim_model, specifications])
print(report.to_markdown())
与 DDC 工作流集成
此验证技能可与其他 DDC 技能集成:
- 估算后:在
cost-estimation-*技能运行后执行 - QTO 后:在
qto-report技能运行后执行 - 进度计划后:在
gantt-chart或4d-simulation技能运行后执行 - 管道运行后:在
etl-pipeline技能运行后执行
持续验证模式
对于长时间运行的自动化会话,在检查点执行验证:
Recommended checkpoints:
- After processing each BIM model
- After generating each major section of estimate
- After completing each phase of schedule
- Before any external data submission
Command: /verify-construction
施工质量不容妥协。交付之前,务必验证。
评论
支持 Markdown