Use when starting or continuing a full CQA 2.1 content quality assessment. Guides through all three tabs (Pre-migration, Quality, Onboarding) parameter by parameter.
Run a complete CQA 2.1 assessment against a Red Hat modular documentation repository. The assessment covers three tabs with 54 total parameters across Pre-migration, Quality, and Onboarding.
See scoring-guide.md for score definitions and checklist.md for the full parameter list.
Before starting any checks, ask the user two questions:
Scope — what to assess:
resolve-includes.py to build the file list — see Include-tree resolution below)Mode — what to do with issues:
Severity filtering — which parameters to run:
cqa-legal-branding). Use the Skill Map below to identify which parameters are covered.| Skill | Parameters Covered |
|---|---|
cqa-tools:cqa-vale-check | P1 |
cqa-tools:cqa-modularization | P2, P3, P4, P5, P6, P7 |
cqa-tools:cqa-titles-descriptions | P8, P9, P10, P11 |
cqa-tools:cqa-procedures | P12, Q12, Q13, Q14, Q15, Q16 |
cqa-tools:cqa-editorial | P13, P14, Q1, Q2, Q3, Q4, Q5, Q18, Q20 |
cqa-tools:cqa-links | P15, P16, P17, Q24, Q25 |
cqa-tools:cqa-legal-branding | P18, P19, Q17, Q23, O1, O2, O3, O4, O5 |
cqa-tools:cqa-user-focus | Q6, Q7, Q8, Q9, Q10, Q11 |
cqa-tools:cqa-tables-images | Q19, Q21, Q22 |
cqa-tools:cqa-onboarding | O6, O7, O8, O9, O10 |
cqa-tools:cqa-report | Final report generation |
Recommended order (dependencies flow downward):
cqa-tools:cqa-vale-check — foundational; fixes here affect other checkscqa-tools:cqa-modularization — structural compliancecqa-tools:cqa-titles-descriptions — metadata qualitycqa-tools:cqa-procedures — procedure structurecqa-tools:cqa-editorial — writing qualitycqa-tools:cqa-links — cross-references and URLscqa-tools:cqa-legal-branding — compliancecqa-tools:cqa-user-focus — content qualitycqa-tools:cqa-tables-images — visual elementscqa-tools:cqa-onboarding — publishing readinesscqa-tools:cqa-report — final summaryWhen the user chooses "One assembly" scope, use resolve-includes.py to build the exact file list before running any checks. This prevents scope leakage (scanning files outside the assembly's include tree).
# List all files included by an assembly (recursively follows include:: directives)
python3 ${CLAUDE_SKILL_DIR}/scripts/resolve-includes.py "$DOCS_REPO/assemblies/admin/assembly_installing.adoc" --base-dir "$DOCS_REPO"
# Tree view showing the include hierarchy
python3 ${CLAUDE_SKILL_DIR}/scripts/resolve-includes.py "$DOCS_REPO/assemblies/admin/assembly_installing.adoc" --base-dir "$DOCS_REPO" --format tree
# JSON output for programmatic use
python3 ${CLAUDE_SKILL_DIR}/scripts/resolve-includes.py "$DOCS_REPO/assemblies/admin/assembly_installing.adoc" --base-dir "$DOCS_REPO" --format json
# Include the root file itself in the output
python3 ${CLAUDE_SKILL_DIR}/scripts/resolve-includes.py "$DOCS_REPO/assemblies/admin/assembly_installing.adoc" --base-dir "$DOCS_REPO" --include-root
The script handles symlinks, attribute placeholders in paths, circular includes, and conditional includes (ifdef/ifndef). Exit codes: 0 (all resolved), 1 (some unresolved), 2 (invalid arguments).
Scoping workflow:
resolve-includes.py to get the file list for the assembly--scan-dirs or by filtering outputReusable scripts in skills/cqa-assess/scripts/ automate repetitive checks. Each script accepts a docs repo path and exits 0 (pass), 1 (issues found), or 2 (invalid arguments). Python 3.9+ stdlib only.
All check scripts (except check-legal-notices.py) scan assemblies/, modules/, topics/, and snippets/ by default. Use --scan-dirs to override (e.g., --scan-dirs topics assemblies to skip snippets). check-legal-notices.py checks titles/*/ for docinfo.xml and the repo root for LICENSE — use --repo-root to specify the repo root when the docs directory is a subdirectory.
| Script | Skill | Parameters | Extra flags |
|---|---|---|---|
check-product-names.py | cqa-tools:cqa-legal-branding | P18, O1, O3 | --config, --fix |
check-conscious-language.py | cqa-tools:cqa-legal-branding | Q23, O4 | |
check-content-types.py | cqa-tools:cqa-modularization | P3, P4, P5 | --no-prefix-check |
check-tp-disclaimers.py | cqa-tools:cqa-legal-branding | P19, O5 | |
check-external-links.py | cqa-tools:cqa-legal-branding | Q17 | --details |
check-legal-notices.py | cqa-tools:cqa-legal-branding | O2 | --repo-root |
check-scannability.py | cqa-tools:cqa-editorial | Q1 | |
check-simple-words.py | cqa-tools:cqa-editorial | Q3 | |
check-readability.py | cqa-tools:cqa-editorial | Q4 | |
check-fluff.py | cqa-tools:cqa-editorial | Q5 | |
resolve-includes.py | (utility) | — | --format, --include-root |
Run all check scripts at once:
for script in scripts/check-*.py; do
python3 "$script" "$DOCS_REPO"
echo "---"
done
resolve-includes.py to determine the exact file list.