Gsd-skill-creator doc-verifier
Guidance for verifying documentation accuracy against running OpenStack infrastructure. Use when detecting documentation drift, validating operations procedures against live systems, or confirming that runbooks produce expected results on the deployed cloud. Implements NASA Product Verification (SP-6105 SS 5.3) applied to documentation artifacts.
git clone https://github.com/Tibsfox/gsd-skill-creator
T=$(mktemp -d) && git clone --depth=1 https://github.com/Tibsfox/gsd-skill-creator "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/methodology/doc-verifier" ~/.claude/skills/tibsfox-gsd-skill-creator-doc-verifier && rm -rf "$T"
skills/methodology/doc-verifier/SKILL.mdDocumentation Verifier
This skill guides agents performing documentation verification for cloud infrastructure. Documentation drift -- the gap between what docs say and what the system does -- is the primary failure mode for operations manuals. The doc-verifier detects drift using NASA's TAID (Test, Analysis, Inspection, Demonstration) verification methods applied to documentation artifacts.
Documentation drift is insidious because it compounds silently. A single undetected drift item erodes operator trust. Once operators stop trusting documentation, they stop reading it and start improvising. The doc-verifier breaks this cycle by making verification systematic and repeatable.
Drift Detection Methods
Four categories of documentation drift exist, each with distinct detection strategies.
Configuration Drift
Definition: Document says setting
X=A but the running system has X=B.
Detection strategy:
- Parse documented configuration values from procedures (grep for
,=
, or YAML key-value patterns): - Read actual configuration files (
for Kolla-Ansible deployments,/etc/kolla/*/
)globals.yml - Query API for runtime configuration where available (
)openstack configuration show - Compare documented values against actual values
- Flag mismatches with severity based on operational impact
Common sources: Kolla-Ansible
globals.yml changes, service reconfiguration, security hardening, upgrades.
Detection patterns:
: Compare documented Fernet key rotation interval againstOPS-KEYSTONE-*keystone.conf [fernet_tokens]
: Compare documented compute driver againstOPS-NOVA-*nova.conf [DEFAULT] compute_driver
: Compare documented ML2 plugin againstOPS-NEUTRON-*ml2_conf.ini [ml2] mechanism_drivers
Endpoint Drift
Definition: Document references a URL, port, or API endpoint that has changed or is unreachable.
Detection strategy:
- Extract documented endpoints (URLs,
patterns, API paths)host:port - Verify reachability using non-destructive probes (
)curl -s -o /dev/null -w "%{http_code}" - Verify service catalog entries match documented endpoints (
)openstack endpoint list - Check port availability where direct HTTP probes are inappropriate
Common sources: TLS migration (HTTP to HTTPS), port changes, VIP address changes, service catalog updates.
Procedure Drift
Definition: Documented steps no longer produce the documented results.
Detection strategy:
- Parse procedure steps to extract commands and expected output
- Execute read-only commands against the running system
- Compare actual output to documented expected output
- For destructive commands, verify preconditions and rollback sections exist without executing
Common sources: CLI argument changes across OpenStack releases, output format changes, deprecated subcommands, renamed resources.
Detection patterns:
: RunRB-KEYSTONE-*
and compare output fields to documented fieldsopenstack token issue
: RunRB-NOVA-*
and verify column headers match documentationopenstack server list
: RunRB-NEUTRON-*
and verify output structureopenstack network list
Version Drift
Definition: Document references a software version that has been upgraded or changed.
Detection strategy:
- Extract version references from documentation (OpenStack release names, package versions, container image tags)
- Compare against installed versions (
,openstack versions show
,rpm -qa | grep openstack
)docker image ls - Check Kolla-Ansible container image tags against documented tags
- Flag version mismatches with assessment of whether procedures are still valid for the new version
Common sources: OpenStack minor releases, Kolla container rebuilds, base OS updates, Python package updates.
Verification Methods (TAID Applied to Documentation)
NASA SP-6105 SS 5.3 defines four verification methods. Applied to documentation verification:
Test
Execute documented commands and compare output to documented expected results.
Approach:
- For each procedure, extract commands (lines starting with
,$
, or indented code blocks)# - Extract expected output (lines following "Expected:" or "Output:" or indented below commands)
- Execute the command on the running system
- Compare actual output to expected output using the appropriate comparison strategy
Comparison strategies:
- Exact match: Deterministic output (version strings, configuration values, boolean results)
- Pattern match: Dynamic values using regex (timestamps, UUIDs, request IDs, IP addresses)
- Presence check: Structural elements that must exist but whose values vary (column headers, section markers)
- Subset check: Output must contain documented elements but may have additional items
Analysis
Compare documented configuration values against running configuration without executing commands.
Approach:
- Parse documented config values from procedures and operations manual
- Read actual configuration files from disk or API
- Compute the diff between documented and actual values
- Assess whether differences affect procedure validity
Targets:
globals.yml, service .conf files, policy files, network configurations, certificate parameters.
Inspection
Review documentation structure for completeness against the required format.
Checklist for operations procedures (OPS- format):*
- Procedure ID present and matches
patternOPS-{SERVICE}-{NNN} - Title clearly states what the procedure accomplishes
- SE Phase reference present
- NPR reference present
- Last verified date and system version present
- Purpose section exists
- Preconditions section exists and lists system state requirements
- Safety considerations section exists
- Procedure section has numbered steps with expected results
- Verification section exists with confirmation steps
- Rollback section exists with undo steps
- References section exists
Checklist for runbooks (RB- format):*
- Runbook ID present and matches
patternRB-{SERVICE}-{NNN} - SE Phase Reference present
- Last Verified Against date and version present
- Preconditions section exists
- Procedure section has numbered steps with expected output
- Each step has "If not" guidance for unexpected results
- Verification section exists
- Rollback section exists
- Related Runbooks section exists
Demonstration
Walk through an end-to-end documented scenario and confirm each step works as described.
Approach:
- Select a complete operational scenario (e.g., "Create project, configure network, launch instance")
- Follow the documented procedure exactly as written
- Record actual results at each step
- Compare end state to documented end state
- Document any deviations with severity assessment
Demonstration scenarios (non-destructive):
- Authentication flow:
through documented stepsopenstack token issue - Resource listing:
,openstack server list
,openstack network listopenstack volume list - Service health:
,openstack compute service listopenstack network agent list
Automated Verification Framework
Script Structure
For each documented procedure, build a verification script:
INPUT: Procedure document (Markdown) PARSE: Extract (command, expected_output) pairs FILTER: Remove destructive commands (create, delete, set, update, migrate) RUN: Execute read-only commands against running system COMPARE: Actual vs documented using appropriate strategy REPORT: Per-procedure pass/fail with specific drift items
Drift Severity Classification
| Severity | Definition | Example |
|---|---|---|
| Critical | Procedure will fail if followed as written | Documented command uses deprecated flag; documented port is wrong |
| Warning | Procedure works but output differs from documentation | Column headers changed; additional fields in output |
| Info | Cosmetic differences that do not affect procedure outcome | Timestamp format change; UUID casing difference |
Reporting Format
Each verification run produces a report:
VERIFICATION REPORT Date: [ISO timestamp] System: [hostname, OpenStack version] Scope: [which documents were verified] RESULTS: Procedures verified: [N] Pass: [N] Fail: [N] (Critical: [N], Warning: [N], Info: [N]) DRIFT ITEMS: 1. [CRITICAL] OPS-NOVA-003 Step 4: 'openstack server create --nic' Expected: "net-id" parameter Actual: "network" parameter (changed in Zed release) Fix: Update command in procedure 2. [WARNING] RB-KEYSTONE-001 Step 2: 'openstack token issue' Expected: 4 columns in output Actual: 5 columns (project_domain_id added) Fix: Update expected output in runbook
Verification Workflow
Step 1: Inventory. Scan
docs/operations-manual/ and docs/runbooks/ for all documented procedures. Build a registry of procedure IDs, commands, and expected outputs.
Step 2: Extract assertions. For each procedure, extract verifiable assertions: commands paired with expected outputs. Tag each assertion as read-only or destructive.
Step 3: Execute read-only assertions. Run all read-only commands against the running system. For destructive commands, verify only that preconditions and rollback sections exist.
Step 4: Compare. Match actual output to documented output using the appropriate comparison strategy (exact, pattern, presence, subset).
Step 5: Report. Generate verification report with drift items classified by severity. Flag Critical items for immediate documentation update.
Step 6: Update metadata. For verified documents, update
LAST VERIFIED date and system version. For documents with Critical drift, mark as UNVERIFIED with drift details.
Safety Constraints
- NEVER execute destructive operations during verification (no
,openstack server delete
,openstack network delete
,openstack volume delete
)openstack project delete - NEVER execute state-modifying operations (no
,openstack server create
,openstack network create
)openstack user set - ONLY read-only verification commands:
,list
,show
, config file reads, service status checkstoken issue - For procedures involving destructive operations, verify that preconditions and rollback sections exist but do not execute the destructive steps
- All verification runs are logged with timestamp, scope, and results for audit trail
- Verification must not generate load that impacts production workloads
Doc Sync Loop Integration
The doc-verifier operates on the doc-sync communication loop (Priority 4) within the GSD communication framework.
Message flow:
- SURGEON detects system change (config update, upgrade, service restart) via the health loop
- SURGEON sends drift alert to doc-sync loop
- Doc-verifier receives alert, runs targeted verification against affected procedures
- Doc-verifier reports drift findings to FLIGHT via doc-sync loop
- FLIGHT directs EXEC-docs to update affected documentation
- Updated documentation is re-verified before publication
Trigger conditions:
- Scheduled verification (daily/weekly depending on change velocity)
- Post-upgrade verification (after any OpenStack service upgrade)
- Post-configuration change verification (after any
or service config change)globals.yml - On-demand verification (operator requests documentation audit)
Cross-References
- NASA SE Methodology skill -- TAID verification methods (SP-6105 SS 5.3) provide the methodological foundation
- ops-manual-writer skill -- Defines the procedure format (OPS-*) that doc-verifier validates against
- runbook-generator skill -- Defines the runbook format (RB-*) that doc-verifier validates against
- Filesystem contracts --
anddocs/operations-manual/
are the verification targetsdocs/runbooks/ - Communication loop schemas -- Doc-sync loop (Priority 4) carries verification results