adr-author
Pass
Audited by Gen Agent Trust Hub on Jul 10, 2026
Risk Level: SAFE
Full Analysis
- Path Traversal Protection: The skill implements a centralized security utility in
scripts/_utils.pythat provides robust path-traversal guards. Every script that interacts with the file system (e.g.,render_template.py,update_lineage.py,normalize_template.py) utilizes thesafe_resolvefunction. This function ensures that all file operations remain confined within permitted project directories by checking for malicious segments (like..) and resolving paths against an explicit allow-list of roots. - Sensitive Data Leak Prevention: The
scripts/scan_sensitive_content.pytool is a proactive security measure that scans Architecture Decision Records (ADRs) and handoff content for high-confidence personal identifiable information (PII). It identifies patterns such as email addresses, phone numbers, and national identifiers, and can also detect internal URLs when targeting public repositories. This scanner is integrated into the Govern phase to block the durable writing of files if sensitive information is detected, preventing accidental data exposure. - Integrity and Schema Validation: The skill enforces strict structural integrity through
scripts/validate_frontmatter.pyandscripts/update_lineage.py. These scripts validate ADR frontmatter against defined schemas and ensure that lineage updates (supersessions) are performed atomically. This prevents metadata corruption and ensures that the architectural record remains consistent and verifiable. - Fuzz Testing for Robustness: The inclusion of an Atheris-based fuzz harness in
tests/fuzz_harness.pydemonstrates a high level of security maturity. This harness subjects the skill's parsing and validation scripts to arbitrary and potentially malformed inputs to discover edge cases or stability issues, reducing the risk of crashes or unexpected behavior when processing user-supplied templates. - Controlled Template Rendering: The
scripts/render_template.pyscript uses a restrictive regular expression to identify placeholders for substitution. By limiting placeholders to a simple alphanumeric and punctuation set, the skill avoids risks associated with more complex template engines that might allow arbitrary code execution.
Audit Metadata