โ† All skills
Tencent SkillHub ยท Security & Compliance

Standards Compliance Checker

Check data compliance with construction standards. Validate data against ISO 19650, IFC, COBie, UniFormat standards.

skill openclawclawhub Free
0 Downloads
0 Stars
0 Installs
0 Score
High Signal

Check data compliance with construction standards. Validate data against ISO 19650, IFC, COBie, UniFormat standards.

โฌ‡ 0 downloads โ˜… 0 stars Unverified but indexed

Install for OpenClaw

Quick setup
  1. Download the package from Yavira.
  2. Extract the archive and review SKILL.md first.
  3. Import or place the package into your OpenClaw setup.

Requirements

Target platform
OpenClaw
Install method
Manual import
Extraction
Extract archive
Prerequisites
OpenClaw
Primary doc
SKILL.md

Package facts

Download mode
Yavira redirect
Package format
ZIP package
Source platform
Tencent SkillHub
What's included
claw.json, instructions.md, SKILL.md

Validation

  • Use the Yavira download entry.
  • Review SKILL.md after the package is downloaded.
  • Confirm the extracted package contains the expected setup assets.

Install with your agent

Agent handoff

Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.

  1. Download the package from Yavira.
  2. Extract it into a folder your agent can access.
  3. Paste one of the prompts below and point your agent at the extracted folder.
New install

I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.

Upgrade existing

I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.

Trust & source

Release facts

Source
Tencent SkillHub
Verification
Indexed source record
Version
2.1.0

Documentation

ClawHub primary doc Primary doc: SKILL.md 8 sections Open source page

Problem Statement

Construction data compliance challenges: Multiple standards to meet Complex validation rules Inconsistent implementations Manual checking is error-prone

Solution

Automated compliance checking against major construction data standards including ISO 19650, IFC, COBie, and UniFormat.

Technical Implementation

from typing import Dict, Any, List, Optional from dataclasses import dataclass, field from enum import Enum import re class Standard(Enum): ISO_19650 = "iso_19650" IFC = "ifc" COBIE = "cobie" UNIFORMAT = "uniformat" OMNICLASS = "omniclass" MASTERFORMAT = "masterformat" class ComplianceLevel(Enum): COMPLIANT = "compliant" MINOR_ISSUES = "minor_issues" MAJOR_ISSUES = "major_issues" NON_COMPLIANT = "non_compliant" @dataclass class ComplianceIssue: rule_id: str rule_name: str severity: str # error, warning, info message: str field: str = "" value: Any = None @dataclass class ComplianceReport: standard: Standard total_rules: int passed: int failed: int warnings: int compliance_level: ComplianceLevel issues: List[ComplianceIssue] = field(default_factory=list) class StandardsComplianceChecker: """Check compliance with construction data standards.""" def __init__(self): self.rules: Dict[Standard, List[Dict]] = self._load_rules() def _load_rules(self) -> Dict[Standard, List[Dict]]: """Load compliance rules for each standard.""" return { Standard.ISO_19650: [ {"id": "ISO-001", "name": "File naming convention", "field": "filename", "pattern": r"^[A-Z]{2,6}-[A-Z]{2,4}-[A-Z]{2,3}-[A-Z0-9]{2,4}-[A-Z]{2,3}-[A-Z]{2,4}-[A-Z0-9]{3,8}$"}, {"id": "ISO-002", "name": "Status code valid", "field": "status", "values": ["WIP", "S0", "S1", "S2", "S3", "S4", "A", "B", "CR"]}, {"id": "ISO-003", "name": "Revision format", "field": "revision", "pattern": r"^P[0-9]{2}|C[0-9]{2}$"}, ], Standard.IFC: [ {"id": "IFC-001", "name": "GUID format", "field": "global_id", "pattern": r"^[0-9A-Za-z_$]{22}$"}, {"id": "IFC-002", "name": "Name required", "field": "name", "required": True}, {"id": "IFC-003", "name": "ObjectType defined", "field": "object_type", "required": True}, ], Standard.COBIE: [ {"id": "COB-001", "name": "Facility name", "field": "facility_name", "required": True}, {"id": "COB-002", "name": "Space name format", "field": "space_name", "pattern": r"^[A-Z0-9]{2,10}[-_]?[A-Z0-9]{0,10}$"}, {"id": "COB-003", "name": "Component type", "field": "component_type", "required": True}, {"id": "COB-004", "name": "Manufacturer info", "field": "manufacturer", "required": True}, ], Standard.UNIFORMAT: [ {"id": "UNI-001", "name": "Level 1 code", "field": "level1", "values": ["A", "B", "C", "D", "E", "F", "G", "Z"]}, {"id": "UNI-002", "name": "Code format", "field": "code", "pattern": r"^[A-G][0-9]{4}$"}, ], Standard.MASTERFORMAT: [ {"id": "MF-001", "name": "Division format", "field": "division", "pattern": r"^[0-9]{2}$"}, {"id": "MF-002", "name": "Section format", "field": "section", "pattern": r"^[0-9]{2}\s?[0-9]{2}\s?[0-9]{2}(\.[0-9]{2})?$"}, ] } def check_compliance(self, data: Dict[str, Any], standard: Standard) -> ComplianceReport: """Check data against specified standard.""" rules = self.rules.get(standard, []) issues = [] passed = 0 failed = 0 warnings = 0 for rule in rules: result = self._check_rule(data, rule) if result: issues.append(result) if result.severity == "error": failed += 1 else: warnings += 1 else: passed += 1 # Determine compliance level if failed == 0 and warnings == 0: level = ComplianceLevel.COMPLIANT elif failed == 0: level = ComplianceLevel.MINOR_ISSUES elif failed <= len(rules) * 0.3: level = ComplianceLevel.MAJOR_ISSUES else: level = ComplianceLevel.NON_COMPLIANT return ComplianceReport( standard=standard, total_rules=len(rules), passed=passed, failed=failed, warnings=warnings, compliance_level=level, issues=issues ) def _check_rule(self, data: Dict[str, Any], rule: Dict) -> Optional[ComplianceIssue]: """Check single compliance rule.""" field = rule.get('field', '') value = data.get(field) # Required check if rule.get('required') and (value is None or value == ''): return ComplianceIssue( rule_id=rule['id'], rule_name=rule['name'], severity="error", message=f"Required field '{field}' is missing", field=field ) # Skip other checks if value is empty if value is None or value == '': return None # Pattern check if 'pattern' in rule: if not re.match(rule['pattern'], str(value)): return ComplianceIssue( rule_id=rule['id'], rule_name=rule['name'], severity="error", message=f"Field '{field}' does not match required format", field=field, value=value ) # Allowed values check if 'values' in rule: if value not in rule['values']: return ComplianceIssue( rule_id=rule['id'], rule_name=rule['name'], severity="error", message=f"Field '{field}' must be one of: {rule['values']}", field=field, value=value ) return None def check_multiple_standards(self, data: Dict[str, Any], standards: List[Standard]) -> Dict[str, ComplianceReport]: """Check data against multiple standards.""" reports = {} for standard in standards: reports[standard.value] = self.check_compliance(data, standard) return reports def check_batch(self, records: List[Dict[str, Any]], standard: Standard) -> Dict[str, Any]: """Check multiple records against standard.""" all_issues = [] compliant_count = 0 for i, record in enumerate(records): report = self.check_compliance(record, standard) if report.compliance_level == ComplianceLevel.COMPLIANT: compliant_count += 1 for issue in report.issues: all_issues.append({ 'record_index': i, 'rule_id': issue.rule_id, 'field': issue.field, 'message': issue.message }) return { 'standard': standard.value, 'total_records': len(records), 'compliant_records': compliant_count, 'compliance_rate': round(compliant_count / len(records) * 100, 1) if records else 0, 'total_issues': len(all_issues), 'issues': all_issues } def add_custom_rule(self, standard: Standard, rule: Dict): """Add custom compliance rule.""" if standard not in self.rules: self.rules[standard] = [] self.rules[standard].append(rule) def generate_report_summary(self, report: ComplianceReport) -> str: """Generate human-readable report summary.""" lines = [ f"Compliance Report: {report.standard.value.upper()}", "=" * 40, f"Total Rules: {report.total_rules}", f"Passed: {report.passed}", f"Failed: {report.failed}", f"Warnings: {report.warnings}", f"Status: {report.compliance_level.value.upper()}", "", "Issues:" ] for issue in report.issues: lines.append(f" [{issue.severity.upper()}] {issue.rule_id}: {issue.message}") return "\n".join(lines)

Quick Start

# Initialize checker checker = StandardsComplianceChecker() # Check ISO 19650 compliance data = { "filename": "PRJ-ARC-MOD-0001-DWG-PLAN-001", "status": "S3", "revision": "P01" } report = checker.check_compliance(data, Standard.ISO_19650) print(f"Compliance: {report.compliance_level.value}") print(f"Passed: {report.passed}/{report.total_rules}")

1. COBie Validation

cobie_data = { "facility_name": "Building A", "space_name": "OFFICE-101", "component_type": "HVAC_Unit", "manufacturer": "Carrier" } report = checker.check_compliance(cobie_data, Standard.COBIE)

2. Batch Validation

records = [{"filename": "...", "status": "..."}, ...] batch_report = checker.check_batch(records, Standard.ISO_19650) print(f"Compliance rate: {batch_report['compliance_rate']}%")

3. Multiple Standards

reports = checker.check_multiple_standards( data, [Standard.ISO_19650, Standard.IFC] )

Resources

DDC Book: Chapter 2.5 - Data Models and Standards ISO 19650: Information management using BIM Website: https://datadrivenconstruction.io

Category context

Identity, auth, scanning, governance, audit, and operational guardrails.

Source: Tencent SkillHub

Largest current source with strong distribution and engagement signals.

Package contents

Included in package
2 Docs1 Config
  • SKILL.md Primary doc
  • instructions.md Docs
  • claw.json Config