Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add datadrivenconstruction/DDC_Skills_for_AI_Agents_in_Construction --skill standards-compliance-checkergit clone --depth 1 https://github.com/datadrivenconstruction/DDC_Skills_for_AI_Agents_in_ConstructionWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/datadrivenconstruction/ddc_skills_for_ai_agents_in_construction/standards-compliance-checker)<a href="https://agentmods.dev/skills/datadrivenconstruction/ddc_skills_for_ai_agents_in_construction/standards-compliance-checker"><img src="https://agentmods.dev/badge/skills/datadrivenconstruction/ddc_skills_for_ai_agents_in_construction/standards-compliance-checker/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/datadrivenconstruction/ddc_skills_for_ai_agents_in_construction/standards-compliance-checker"><img src="https://agentmods.dev/badge/skills/datadrivenconstruction/ddc_skills_for_ai_agents_in_construction/standards-compliance-checker.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00031 | $0.02508 |
| Opus 5.5 | $0.00012 | $0.01003 |
| Sonnet 5.5 | $0.00006 | $0.00502 |
| Haiku 4.5 | $0.00003 | $0.00251 |
Grade A, and why
standards-compliance-checker scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
Copies of this mod
1 near-identical copy found in the catalogue:
- standards-compliance-checker — 100% identical, 0 lines differ
How it starts
The opening of the file, as written. The whole thing — 314 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Standards Compliance Checker
Business Case
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)
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 314 lines · 31 tokens per session scan A 707cb744fe7c
standards-compliance-checker is a skill published in the GitHub repository datadrivenconstruction/DDC_Skills_for_AI_Agents_in_Construction (374 stars, last pushed 8d ago), licensed MIT. It adds 31 tokens to every session and 2,508 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
klauselinhalt-und-verbote-pruefen
Prüft eine AGB-Klausel anhand von Kontrollfähigkeit, gesetzlichen Klauselverboten und Interessenabwägung. Für B2C und B2B; liefert ein Klauselvotum mit Leitbild, Gegenposition und konkreter Rechtsfolge.
write-outreach-outreach-qa
Step of the write-outreach playbook: the checks a finished outreach pack and send file must pass before delivery, covering facts, proof, compliance, length, asks and tone. Run write-outreach instead; not for direct use.
wcag
Expert WCAG (Web Content Accessibility Guidelines) advisor covering WCAG 2.0, 2.1, and 2.2 — the W3C international accessibility standards. Use this skill whenever a user asks about WCAG success criteria, conformance levels (A/AA/AAA), accessibility audits, POUR principles, accessibility statements, ARIA patterns…
compliance-checker
Audits a codebase or business process for regulatory compliance across GDPR, HIPAA, SOC2, CCPA, and PCI-DSS. Scans for PII handling, data retention, encryption, access controls, audit logging, consent management, and data transfer issues. Generates a structured compliance report with findings, gap analysis…
cease-desist-bossmann007
Draft uma notificação extrajudicial (modo envio) ou faça a triagem de uma recebida (modo recebimento). Use para fazer valer direitos contra um infrator com carta de cobrança calibrada à postura de enforcement, ou quando uma notificação recebida precisa virar memorando estruturado de opções com recomendação.
software-copyright
A guided workflow for preparing Chinese software copyright registration materials from a real software project. It produces drafts such as application details, source-code documents, and a user manual.