helpers/skills/doc-validate/SKILL.md
Use when you need to validate AsciiDoc documentation for technical accuracy using Extract-Identify-Validate pattern. Runs Vale, asciidoctor, lychee, YAML syntax checks, and LLM-powered cross-reference validation. Produces workspace/validation-findings.json.
npx skillsauth add opendatahub-io/ai-helpers doc-validateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Validate AsciiDoc documentation files for technical accuracy, style compliance, and structural correctness.
$ARGUMENTS contains:
workspace/context-package.json)Resolve the target argument to a list of .adoc files:
**/*.adocExecute the validation script on all discovered files:
python3 "${CLAUDE_SKILL_DIR}/scripts/validate-artifacts.py" "${file1}" "${file2}" ...
This runs:
Collect all findings from the script output.
For each AsciiDoc file, extract embedded technical artifacts:
[source,yaml] delimiters[source,bash] or [source,terminal] delimiters{attribute-name}/api/v1/...If a context package is available, use LLM judgment to cross-reference extracted artifacts against the gathered context:
For each extracted artifact:
Ask the LLM:
Check AsciiDoc structure requirements:
Source the AsciiDoc conventions helper (which internally sources scripts/load-env.sh for credentials and uses scripts/parse-product-config.py to resolve module prefixes):
source "${CLAUDE_SKILL_DIR}/scripts/asciidoc-conventions.sh"
for file in <files>; do
adoc_validate_structure "$file"
mod_type="$(adoc_module_type "$file")"
if [[ "$mod_type" == "unknown" ]]; then
# record structural finding: filename prefix does not map to a known module type
:
fi
done
Verify:
[id="..."]):_mod-docs-content-type:)adoc_module_type check)Merge all findings from Steps 2-5, deduplicating and normalizing:
{
"validated_at": "2026-04-14T10:40:00Z",
"files_validated": 5,
"findings": [
{
"file": "modules/serving/pages/con_model-serving.adoc",
"line": 42,
"severity": "high|medium|low",
"category": "vale|asciidoctor|lychee|yaml_syntax|cross_reference|structure",
"tool": "vale|asciidoctor|lychee|yaml_syntax|llm|structural",
"rule": "RedHat.Spelling",
"message": "Description of the issue",
"suggestion": "How to fix it"
}
],
"summary": {
"high": 0,
"medium": 3,
"low": 5,
"total": 8,
"tools_run": ["vale", "asciidoctor", "yaml_syntax"],
"tools_skipped": ["lychee"]
}
}
Write workspace/validation-findings.json with the compiled results.
Primary: workspace/validation-findings.json
Report to caller: total findings by severity, which tools ran vs skipped.
tools_skipped in the output to confirm which ran.development
Run hexora static analysis on a Python package repository to detect suspicious code patterns, then triage findings with deterministic rules and AI reasoning to produce a structured risk report section.
development
Inspect recent git history of a Python package repository for suspicious commits touching supply-chain-sensitive files, then triage findings with AI reasoning to produce a structured risk report section.
development
Scan a Python package repository for compiled/binary files using Fromager-style detection and malcontent YARA analysis, then triage findings with deterministic rules and AI reasoning to produce a structured risk report section.
testing
Use this skill to identify non-Red Hat RPM packages installed in container images or on the local machine. For containers, pulls images across multiple architectures and release tags; for local scans, inspects the host directly. Extracts RPM signing metadata and reports packages not signed with the Red Hat GPG key as CSV output. Use when auditing compliance, checking supply-chain provenance, or scanning for third-party RPMs in RHOAI component images.