48 lines
1.3 KiB
Plaintext
48 lines
1.3 KiB
Plaintext
#!/usr/bin/env nu
|
|
# Documentation Audit Script
|
|
# Identifies quality issues in 201 documentation files
|
|
|
|
def main [] {
|
|
let docs_root = "provisioning/docs/src"
|
|
|
|
# Find all markdown files
|
|
let all_files = (glob $"($docs_root)/**/*.md")
|
|
|
|
let audit_results = (
|
|
$all_files | par-each {|file|
|
|
let content = (open $file | str trim)
|
|
let size = ($file | stat | get size)
|
|
let basename = ($file | path basename)
|
|
|
|
# Detect issues
|
|
let is_stub = ($size < 100)
|
|
let kcl_refs = ($content | grep -i "kcl" | length)
|
|
let claude_refs = ($content | grep '.claude/' | length)
|
|
let adr_uppercase = ($basename =~ r'^ADR-')
|
|
let bare_urls = ($content | grep -E r'https?://[^\[]*$' | length)
|
|
|
|
{
|
|
file: $file,
|
|
basename: $basename,
|
|
size: $size,
|
|
status: (
|
|
if $is_stub { "STUB" }
|
|
else if ($claude_refs > 0) { "CROSS-REF-VIOLATION" }
|
|
else if ($kcl_refs > 0 and ($file !~ "adr-010|adr-011")) { "KCL-DEPRECATED" }
|
|
else if $adr_uppercase { "ADR-NAMING" }
|
|
else if ($bare_urls > 0) { "BARE-URLS" }
|
|
else { "OK" }
|
|
),
|
|
kcl_count: $kcl_refs,
|
|
claude_refs: $claude_refs,
|
|
bare_urls: $bare_urls
|
|
}
|
|
}
|
|
)
|
|
|
|
# Output results
|
|
$audit_results | to json
|
|
}
|
|
|
|
main
|